Введение 9
Глава 1. Первые шаги
11
1.1. Установка Python 11
1.1.1. Установка нескольких интерпретаторов Python 15
1.1.2. Запуск программы с помощью разных версий Python 17
1.2. Первая программа на Python 18
1.3. Структура программы 20
1.4. Комментарии 23
1.5. Скрытые возможности IDLE 24
1.6. Вывод результатов работы программы 25
1.7. Ввод данных 27
1.8. Доступ к документации 29
Глава 2. Переменные
32
2.1. Именование переменных 32
2.2. Типы данных 34
2.3. Присваивание значения переменным 37
2.4. Проверка типа данных 39
2.5. Преобразование типов данных 40
2.6. Удаление переменной 43
Глава 3. Операторы
44
3.1. Математические операторы 44
3.2. Двоичные операторы 46
3.3. Операторы для работы с последовательностями 47
3.4. Операторы присваивания 48
3.5. Приоритет выполнения операторов 49
Глава 4. Условные операторы и циклы
51
4.1. Операторы сравнения 52
4.2. Оператор ветвления if...else 54
4.3. Цикл for 57
4.4. Функции range() и enumerate() 59
4.5. Цикл while 62
4.6. Оператор continue. Переход на следующую итерацию цикла 63
4.7. Оператор break. Прерывание цикла 63
Глава 5. Числа
65
5.1. Встроенные функции и методы для работы с числами 67
5.2. Модуль math. Математические функции 69
5.3. Модуль random. Генерация случайных чисел 70
Глава 6. Строки и двоичные данные
73
6.1. Создание строки 74
6.2. Специальные символы 78
6.3. Операции над строками 78
6.4. Форматирование строк 81
6.5. Метод format() 87
6.6. Функции и методы для работы со строками 91
6.7. Настройка локали 95
6.8. Изменение регистра символов 96
6.9. Функции для работы с символами 96
6.10. Поиск и замена в строке 97
6.11. Проверка типа содержимого строки 100
6.12. Тип данных bytes 103
6.13. Тип данных bytearray 107
6.14. Преобразование объекта в последовательность байтов 110
6.15. Шифрование строк 111
Глава 7. Регулярные выражения
113
7.1. Синтаксис регулярных выражений 113
7.2. Поиск первого совпадения с шаблоном 122
7.3. Поиск всех совпадений с шаблоном 127
7.4. Замена в строке 129
7.5. Прочие функции и методы 131
Глава 8. Списки, кортежи, множества и диапазоны
132
8.1. Создание списка 133
8.2. Операции над списками 136
8.3. Многомерные списки 139
8.4. Перебор элементов списка 140
8.5. Генераторы списков и выражения-генераторы 141
8.6. Функции map(), zip(), filter() и reduce() 142
8.7. Добавление и удаление элементов списка 145
8.8. Поиск элемента в списке и получение сведений о значениях, входящих в список 147
8.9. Переворачивание и перемешивание списка 149
8.10. Выбор элементов случайным образом 149
8.11. Сортировка списка 150
8.12. Заполнение списка числами 151
8.13. Преобразование списка в строку 152
8.14. Кортежи 152
8.15. Множества 154
8.16. Диапазоны 159
8.17. Модуль itertools 161
8.17.1. Генерация неопределенного количества значений 161
8.17.2. Генерация комбинаций значений 162
8.17.3. Фильтрация элементов последовательности 163
8.17.4. Прочие функции 164
Глава 9. Словари
167
9.1. Создание словаря 167
9.2. Операции над словарями 170
9.3. Перебор элементов словаря 171
9.4. Методы для работы со словарями 172
9.5. Генераторы словарей 175
Глава 10. Работа с датой и временем
176
10.1. Получение текущих даты и времени 176
10.2. Форматирование даты и времени 178
10.3. «Засыпание» скрипта 180
10.4. Модуль datetime. Манипуляции датой и временем 181
10.4.1. Класс timedelta 181
10.4.2. Класс date 183
10.4.3. Класс time 187
10.4.4. Класс datetime 189
10.5. Модуль calendar. Вывод календаря 193
10.5.1. Методы классов TextCalendar и LocaleTextCalendar 195
10.5.2. Методы классов HTMLCalendar и LocaleHTMLCalendar 196
10.5.3. Другие полезные функции 197
10.6. Измерение времени выполнения фрагментов кода 200
Глава 11. Пользовательские функции
203
11.1. Определение функции и ее вызов 203
11.2. Расположение определений функций 206
11.3. Необязательные параметры и сопоставление по ключам 207
11.4. Переменное число параметров в функции 210
11.5. Анонимные функции 212
11.6. Функции-генераторы 213
11.7. Декораторы функций 214
11.8. Рекурсия. Вычисление факториала 216
11.9. Глобальные и локальные переменные 217
11.10. Вложенные функции 220
11.11. Аннотации функций 222
Глава 12. Модули и пакеты
223
12.1. Инструкция import 223
12.2. Инструкция from 227
12.3. Пути поиска модулей 229
12.4. Повторная загрузка модулей 230
12.5. Пакеты 231
Глава 13. Объектно-ориентированное программирование
235
13.1. Определение класса и создание экземпляра класса 235
13.2. Методы __init__() и __del__() 239
13.3. Наследование 239
13.4. Множественное наследование 241
13.4.1. Примеси и их использование 243
13.5. Специальные методы 244
13.6. Перегрузка операторов 247
13.7. Статические методы и методы класса 249
13.8. Абстрактные методы 250
13.9. Ограничение доступа к идентификаторам внутри класса 252
13.10. Свойства класса 253
13.11. Декораторы классов 255
Глава 14. Обработка исключений
256
14.1. Инструкция try...except...else...finally 257
14.2. Инструкция with...as 261
14.3. Классы встроенных исключений 263
14.4. Пользовательские исключения 265
Глава 15. Итераторы, контейнеры и перечисления
269
15.1. Итераторы 270
15.2. Контейнеры 271
15.2.1. Контейнеры-последовательности 271
15.2.2. Контейнеры-словари 273
15.3. Перечисления 274
Глава 16. Работа с файлами и каталогами
279
16.1. Открытие файла 279
16.2. Методы для работы с файлами 286
16.3. Доступ к файлам с помощью модуля os 292
16.4. Классы StringIO и BytesIO 294
16.5. Права доступа к файлам и каталогам 298
16.6. Функции для манипулирования файлами 300
16.7. Преобразование пути к файлу или каталогу 303
16.8. Перенаправление ввода/вывода 305
16.9. Сохранение объектов в файл 308
16.10. Функции для работы с каталогами 312
16.11. Исключения, возбуждаемые файловыми операциями 315
Глава 17. Основы SQLite
317
17.1. Создание базы данных 317
17.2. Создание таблицы 319
17.3. Вставка записей 325
17.4. Обновление и удаление записей 328
17.5. Изменение структуры таблицы 328
17.6. Выбор записей 329
17.7. Выбор записей из нескольких таблиц 332
17.8. Условия в инструкциях WHERE и HAVING 334
17.9. Индексы 337
17.10. Вложенные запросы 339
17.11. Транзакции 340
17.12. Удаление таблицы и базы данных 343
Глава 18. Доступ к базе данных SQLite из Python
344
18.1. Создание и открытие базы данных 345
18.2. Выполнение запросов 346
18.3. Обработка результата запроса 350
18.4. Управление транзакциями 354
18.5. Создание пользовательской сортировки 356
18.6. Поиск без учета регистра символов 357
18.7. Создание агрегатных функций 358
18.8. Преобразование типов данных 359
18.9. Сохранение в таблице даты и времени 363
18.10. Обработка исключений 364
18.11. Трассировка выполняемых запросов 367
Глава 19. Доступ к базам данных MySQL
368
19.1. Библиотека MySQLClient 369
19.1.1. Подключение к базе данных 369
19.1.2. Выполнение запросов 372
19.1.3. Обработка результата запроса 375
19.2. Библиотека PyODBC 378
19.2.1. Подключение к базе данных 379
19.2.2. Выполнение запросов 380
19.2.3. Обработка результата запроса 382
Глава 20. Библиотека Pillow. Работа с изображениями
386
20.1. Загрузка готового изображения 386
20.2. Создание нового изображения 388
20.3. Получение информации об изображении 389
20.4. Манипулирование изображением 390
20.5. Рисование линий и фигур 394
20.6. Библиотека Wand 396
20.7. Вывод текста 402
20.8. Создание скриншотов 406
Глава 21. Взаимодействие с Интернетом
407
21.1. Разбор URL-адреса 407
21.2. Кодирование и декодирование строки запроса 410
21.3. Преобразование относительного URL-адреса в абсолютный 414
21.4. Разбор HTML-эквивалентов 414
21.5. Обмен данными по протоколу HTTP 416
21.6. Обмен данными с помощью модуля urllib.request 421
21.7. Определение кодировки 424
Глава 22. Сжатие данных
426
22.1. Сжатие и распаковка по алгоритму GZIP 426
22.2. Сжатие и распаковка по алгоритму BZIP2 428
22.3. Сжатие и распаковка по алгоритму LZMA 430
22.4. Работа с архивами ZIP 433
22.5. Работа с архивами TAR 436

Заключение 441
Приложение. Описание электронного архива 443
Предметный указатель 445