Оглавление
Введение...................................................................................................15
Предисловие..............................................................................................16
Благодарности...........................................................................................17
О книге......................................................................................................18
Как использовать книгу........................................................................................................................18
Структура книги......................................................................................................................................19
Правила оформления кода...................................................................................................................20
Упражнения...............................................................................................................................................21
Ответы к упражнениям.........................................................................................................................21
Исходный код...........................................................................................................................................21
Системные требования .........................................................................................................................21
Программные требования....................................................................................................................21
Об авторе....................................................................................................................................................22
Об иллюстрации на обложке ..............................................................................................................22
От издательства .......................................................................................................................................22
Часть 1. Первые шаги............................................................................ 23
Глава 1. Знакомство с Python......................................................................24
1.1. Почему мне стоит использовать Python? ...............................................................................24
1.2. Сильные стороны Python .............................................................................................................25
1.3. Не самые сильные стороны Python...........................................................................................28
1.4. Почему нужно изучать Python 3?..............................................................................................30
Итоги ...........................................................................................................................................................31
Глава 2. Первые шаги..................................................................................32
2.1. Установка Python.............................................................................................................................32
2.2. Базовый интерактивный режим и IDLE.................................................................................34
6   Оглавление
2.3. Использование окна оболочки Python в IDLE.....................................................................36
2.4. Hello, World........................................................................................................................................37
2.5. Использование интерактивного приглашения для изучения Python ..........................38
Итоги ...........................................................................................................................................................39
Глава 3. Краткий обзор Python....................................................................40
3.1. Общее описание Python................................................................................................................40
3.2. Встроенные типы данных.............................................................................................................41
3.3. Управляющие конструкции.........................................................................................................49
3.4. Создание модуля..............................................................................................................................53
3.5. Объектно-ориентированное программирование..................................................................54
Итоги ...........................................................................................................................................................56
Часть 2. Основной материал................................................................. 57
Глава 4. Основы..........................................................................................58
4.1. Отступы и оформление блоков ..................................................................................................58
4.2. Комментарии.....................................................................................................................................60
4.3. Переменные и присваивание.......................................................................................................60
4.4. Выражения.........................................................................................................................................62
4.5. Строки.................................................................................................................................................63
4.6. Числа....................................................................................................................................................64
4.7. Значение None ..................................................................................................................................68
4.8. Получение данных от пользователя .........................................................................................68
4.9. Встроенные операторы..................................................................................................................69
4.10. Основной стиль программирования на Python..................................................................69
Итоги ...........................................................................................................................................................70
Глава 5. Списки, кортежи и множества.........................................................71
5.1. Сходство между списками и массивами..................................................................................71
5.2. Индексы списков.............................................................................................................................72
5.3. Модификация списков..................................................................................................................74
5.4. Сортировка списков .......................................................................................................................77
5.5. Другие распространенные операции со списками...............................................................79
5.6. Вложенные списки и глубокое копирование.........................................................................83
5.7. Кортежи ..............................................................................................................................................85
5.8. Множества .........................................................................................................................................89
Итоги ...........................................................................................................................................................91
Оглавление 7
Глава 6. Строки..........................................................................................92
6.1. Строки как последовательности символов ............................................................................92
6.2. Основные операции со строками...............................................................................................93
6.3. Специальные символы и экранированные последовательности....................................93
6.4. Методы строк....................................................................................................................................96
6.5. Преобразование объектов в строки........................................................................................ 105
6.6. Использование метода format.................................................................................................. 107
6.7. Форматирование строк с символом % .................................................................................. 109
6.8. Строковая интерполяция .......................................................................................................... 111
6.9. Байтовые строки........................................................................................................................... 112
Итоги ........................................................................................................................................................ 113
Глава 7. Словари....................................................................................... 114
7.1. Что такое словарь?....................................................................................................................... 114
7.2. Другие операции со словарями ............................................................................................... 116
7.3. Подсчет слов................................................................................................................................... 119
7.4. Что может использоваться в качестве ключа?................................................................... 120
7.5. Разреженные матрицы................................................................................................................ 121
7.6. Словари как кэши......................................................................................................................... 122
7.7. Эффективность словарей .......................................................................................................... 123
Итоги ........................................................................................................................................................ 124
Глава 8. Управляющие конструкции........................................................... 125
8.1. Цикл while....................................................................................................................................... 125
8.2. Команда if-elif-else........................................................................................................................ 126
8.3. Цикл for............................................................................................................................................ 127
8.4. Генераторы строк и словарей.................................................................................................... 131
8.5. Команды, блоки и отступы........................................................................................................ 133
8.6. Логические значения и выражения ....................................................................................... 136
8.7. Простая программа для анализа текстового файла.......................................................... 138
Итоги ........................................................................................................................................................ 139
Глава 9. Функции..................................................................................... 140
9.1. Базовые определения функций............................................................................................... 140
9.2. Параметры функций.................................................................................................................... 141
9.3. Изменяемые объекты в качестве аргументов ..................................................................... 145
9.4. Локальные, нелокальные и глобальные переменные ...................................................... 147
9.5. Присваивание функций переменным ................................................................................... 149
8   Оглавление
9.6. Лямбда-выражения...................................................................................................................... 149
9.7. Функции-генераторы.................................................................................................................. 150
9.8. Декораторы..................................................................................................................................... 151
Итоги ........................................................................................................................................................ 153
Глава 10. Модули и правила областей видимости........................................ 154
10.1. Что такое модуль?...................................................................................................................... 154
10.2. Первый модуль ........................................................................................................................... 155
10.3. Команда import ........................................................................................................................... 158
10.4. Путь поиска модулей................................................................................................................ 158
10.5. Приватные имена в модулях.................................................................................................. 160
10.6. Библиотечные и сторонние модули .................................................................................... 161
10.7. Правила областей видимости и пространств имен Python......................................... 162
Итоги ........................................................................................................................................................ 169
Глава 11. Программы Python..................................................................... 170
11.1. Создание простейшей программы........................................................................................ 171
11.2. Прямое исполнение сценариев в UNIX ............................................................................. 176
11.3. Сценарии в macOS..................................................................................................................... 177
11.4. Возможности выполнения сценариев в Windows........................................................... 177
11.5. Программы и модули................................................................................................................ 178
11.6. Распространение приложений Python ............................................................................... 183
Итоги ........................................................................................................................................................ 185
Глава 12. Работа с файловой системой....................................................... 187
12.1. os и os.path против pathlib....................................................................................................... 187
12.2. Пути и имена................................................................................................................................ 188
12.3. Получение информации о файлах ....................................................................................... 196
12.4. Другие операции с файловой системой ............................................................................. 198
12.5. Обработка всех файлов в поддереве каталогов ............................................................... 201
Итоги ........................................................................................................................................................ 202
Глава 13. Чтение и запись файлов.............................................................. 205
13.1. Открытие файлов и объектов file ......................................................................................... 205
13.2. Закрытие файлов........................................................................................................................ 206
13.3. Открытие файлов для записи или в других режимах ................................................... 206
13.4. Функции чтения и записи текстовых и двоичных данных ......................................... 207
Оглавление  9
13.5. Чтение и запись с использованием pathlib........................................................................ 210
13.6. Экранный ввод/вывод и перенаправление....................................................................... 210
13.7. Чтение структурированных двоичных данных с использованием
модуля struct.......................................................................................................................................... 213
13.8. Сериализация и модуль pickle............................................................................................... 215
13.9. Модуль shelve .............................................................................................................................. 218
Итоги ........................................................................................................................................................ 221
Глава 14. Исключения............................................................................... 222
14.1. Знакомство с исключениями ................................................................................................. 222
14.2. Исключения в Python............................................................................................................... 226
14.3. Менеджеры контекста и ключевое слово with................................................................. 236
Итоги ........................................................................................................................................................ 238
Часть 3. Расширенные возможности языка ...................................... 239
Глава 15. Классы и объектно-ориентированное программирование.............. 240
15.1. Определение классов................................................................................................................ 240
15.2. Переменные экземпляров ....................................................................................................... 242
15.3. Методы........................................................................................................................................... 243
15.4. Переменные класса.................................................................................................................... 245
15.5. Статические методы и методы классов .............................................................................. 247
15.6. Наследование............................................................................................................................... 249
15.7. Наследование и переменные экземпляров и классов.................................................... 252
15.8. Основные возможности классов Python............................................................................ 253
15.9. Приватные переменные и приватные методы.................................................................. 255
15.10. Использование @property для создания более гибких
переменных экземпляров.................................................................................................................. 256
15.11. Правила области видимости и пространств имен
для экземпляров классов................................................................................................................... 258
15.12. Деструкторы и управление памятью ................................................................................ 262
15.13. Множественное наследование ............................................................................................ 263
Итоги ........................................................................................................................................................ 265
Глава 16. Регулярные выражения.............................................................. 266
16.1. Что такое регулярное выражение?....................................................................................... 266
16.2. Регулярные выражения со специальными символами................................................. 267
10   Оглавление
16.3. Регулярные выражения и необработанные строки........................................................ 268
16.4. Извлечение совпавшего текста из строк............................................................................ 270
16.5. Замена текста с использованием регулярных выражений.......................................... 274
Итоги ........................................................................................................................................................ 276
Глава 17. Типы данных как объекты........................................................... 277
17.1. Типы тоже являются объектами........................................................................................... 277
17.2. Использование типов ............................................................................................................... 278
17.3. Типы и пользовательские классы......................................................................................... 278
17.4. Утиная типизация ...................................................................................................................... 280
17.5. Что такое специальный метод-атрибут?............................................................................ 281
17.6. Поведение объекта как списка............................................................................................... 282
17.7. Специальный метод-атрибут __getitem__........................................................................ 283
17.8. Полноценная эмуляция списков объектами .................................................................... 286
17.9. Субклассирование встроенных типов ................................................................................ 288
17.10. Когда используются специальные методы-атрибуты................................................. 290
Итоги ........................................................................................................................................................ 291
Глава 18. Пакеты...................................................................................... 292
18.1. Что такое пакет? ......................................................................................................................... 292
18.2. Первый пример ........................................................................................................................... 293
18.3. Конкретный пример.................................................................................................................. 294
18.4. Атрибут __all__.......................................................................................................................... 298
18.5. Правильное использование пакетов.................................................................................... 299
Итоги ........................................................................................................................................................ 300
Глава 19. Использование библиотек Python............................................... 301
19.1. «Батарейки в комплекте»: стандартная библиотека...................................................... 301
19.2. За пределами стандартной библиотеки ............................................................................. 306
19.3. Установка дополнительных библиотек Python............................................................... 307
19.4. Установка библиотек Python с использованием pip и venv ........................................ 307
19.5. PyPI (CheeseShop)..................................................................................................................... 309
Итоги ........................................................................................................................................................ 309
Часть 4. Работа с данными.................................................................. 311
Глава 20. Обработка данных в файлах........................................................ 312
20.1. Проблема: бесконечный поток файлов данных............................................................... 312
20.2. Сценарий: адовая поставка продуктов ............................................................................... 313
Оглавление  11
20.3. Дальнейшая организация........................................................................................................ 315
20.4. Экономия места: сжатие и удаление ................................................................................... 317
Итоги ........................................................................................................................................................ 320
Глава 21. Обработка файлов данных.......................................................... 321
21.1. Знакомство с ETL ...................................................................................................................... 321
21.2. Чтение текстовых файлов....................................................................................................... 322
21.3. Файлы Excel................................................................................................................................. 331
21.4. Очистка данных.......................................................................................................................... 333
21.5. Запись файлов данных............................................................................................................. 336
Итоги ........................................................................................................................................................ 339
Глава 22. Передача данных по сети............................................................ 340
22.1. Получение файлов..................................................................................................................... 340
22.2. Получение данных через API ................................................................................................ 344
22.3. Структурированные форматы данных ............................................................................... 346
22.4. Извлечение веб-данных........................................................................................................... 355
Итоги ........................................................................................................................................................ 359
Глава 23. Хранение данных........................................................................ 360
23.1. Реляционные базы данных ..................................................................................................... 360
23.2. SQLite: использование базы данных sqlite3 ..................................................................... 361
23.3. MySQL, PostgreSQL и другие реляционные базы данных.......................................... 363
23.4. Простая работа с базами данных с ORM........................................................................... 364
23.5. Базы данных NoSQL................................................................................................................. 371
23.6. Хранение пар «ключ–значение» в Redis............................................................................ 372
23.7. Документы в MongoDB ........................................................................................................... 375
Итоги ........................................................................................................................................................ 378
Глава 24. Анализ данных........................................................................... 379
24.1. Средства Python для анализа данных................................................................................. 379
24.2. Jupyter Notebook......................................................................................................................... 380
24.3. Python и pandas........................................................................................................................... 383
24.4. Очистка данных.......................................................................................................................... 385
24.5. Агрегирование и преобразования данных......................................................................... 390
24.6. Графическое представление данных.................................................................................... 395
24.7. Когда pandas использовать не рекомендуется ................................................................. 396
Итоги ........................................................................................................................................................ 396
12   Оглавление
Практический пример............................................................................... 397
Загрузка данных ................................................................................................................................... 397
Получение и разбор погодных данных......................................................................................... 407
Приложение А. Документация Python....................................................... 414
А.1. Обращение к документации Python в интернете............................................................. 414
А.2. Как стать питонистом ................................................................................................................ 418
A.3. PEP 8 — руководство по стилю программирования Python ........................................ 420
A.4. Комментарии................................................................................................................................. 426
A.5. Дзен Python ................................................................................................................................... 435
Приложение Б. Ответы на упражнения...................................................... 437
Б.1. Глава 4.............................................................................................................................................. 437
Б.2. Глава 5.............................................................................................................................................. 440
Б.3. Глава 6.............................................................................................................................................. 443
Б.4. Глава 7.............................................................................................................................................. 446
Б.5. Глава 8.............................................................................................................................................. 448
Б.6. Глава 9.............................................................................................................................................. 450
Б.7. Глава 10............................................................................................................................................ 454
Б.8. Глава 11............................................................................................................................................ 455
Б.9. Глава 12............................................................................................................................................ 456
Б.10. Глава 13 ......................................................................................................................................... 457
Б.11. Глава 14 ......................................................................................................................................... 460
Б.12. Глава 15 ......................................................................................................................................... 463
Б.13. Глава 16 ......................................................................................................................................... 467
Б.14. Глава 17 ......................................................................................................................................... 469
Б.15. Глава 18 ......................................................................................................................................... 470
Б.16. Глава 20 ......................................................................................................................................... 471
Б.17. Глава 21 ......................................................................................................................................... 473
Б.18. Глава 22 ......................................................................................................................................... 474
Б.19. Глава 23 ......................................................................................................................................... 477
Б.20. Глава 24 ......................................................................................................................................... 479