Об авторе....15
О рецензентах....16
Предисловие....17
Для кого предназначена эта книга....17
О чем эта книга....18
Как получить максимальную отдачу от книги....19
Загрузка файлов с примерами кода....19
Условные обозначения....20
Раздел 1. Python помимо основ....22
Глава 1. Оптимальный жизненный цикл разработки на Python....24
Культура и сообщество Python....24
Этапы проекта Python....27
Стратегия процесса разработки....28
Итерация по этапам....29
Стремление к MVP в первую очередь....29
Стратегия разработки для специализированных предметных областей....30
Эффективное документирование кода Python....33
Комментарии Python....33
Docstring....33
Документация на уровне функций или классов....35
Разработка эффективной схемы именования....36
Методы....37
Переменные....37
Константы....38
Классы....38
Пакеты....39
Модули....39
Соглашения об импорте....39
Аргументы....39
Полезные инструменты....39
Системы контроля версий....40
Что не стоит хранить в репозитории системы контроля версий....40
Понимание стратегий развертывания кода....41
Пакетная разработка....41
Среды разработки Python....43
IDLE....43
Sublime Text....43
Atom....43
PyCharm....43
Visual Studio Code....44
PyDev....44
Spyder....44
Заключение....44
Вопросы....45
Дополнительные ресурсы....45
Ответы....45
Глава 2. Использование модулей для сложных проектов....46
Технические требования....47
Знакомство с модулями и пакетами....47
Импорт модулей....47
Оператор import....49
Оператор __import....53
Инструмент importlib.importmodule....53
Абсолютный и относительный импорт....54
Загрузка и инициализация модуля....56
Загрузка модуля....56
Установка параметров для специальных переменных....56
Выполнение кода....57
Стандартные модули....58
Написание многоразовых модулей....59
Независимая функциональность....59
Генерализация функционала....60
Традиционный стиль программирования....61
Четко определенная документация....62
Сборка пакетов....63
Именование....64
Файл инициализации пакета....64
Сборка пакета....64
Доступ к пакетам из любого расположения....67
Общий доступ к пакету....71
Создание пакета в соответствии с рекомендациями РуРА....71
Установка из локального исходного кода с помощью pip....74
Публикация пакета в Test PyPI....76
Установка пакета из PyPI....77
Заключение....78
Вопросы....78
Дополнительные ресурсы....78
Ответы....79
Глава 3. Расширенное объектно-ориентированное программирование на Python....80
Технические требования....81
Знакомство с классами и объектами....81
Различия между атрибутами класса и атрибутами экземпляра....81
Конструкторы и деструкторы классов....84
Различия между методами класса и методами экземпляра....85
Специальные методы....86
Принципы ООП....87
Инкапсуляция данных....88
Объединение данных и действий....88
Сокрытие информации....90
Защита данных....92
Традиционный подход к использованию геттеров и сеттеров....92
Использование декоратора property....93
Расширение классов с помощью наследования....95
Простое наследование....95
Множественное наследование....97
Полиморфизм....98
Перегрузка метода....98
Переопределение метода....99
Абстракция....101
Композиция как альтернативный подход к проектированию....103
Утиная типизация в Python....105
Когда не стоит использовать ООП в Python....106
Заключение....107
Вопросы....107
Дополнительные ресурсы....108
Ответы....108
Раздел 2. Расширенные концепции программирования....110
Глава 4. Библиотеки Python для продвинутого программирования....112
Технические требования....112
Введение в контейнеры данных Python....113
Строки....113
Списки....114
Кортежи....115
Словари....115
Множества....116
Итераторы и генераторы для обработки данных....117
Итераторы....117
Генераторы....121
Обработка файлов в Python....123
Операции с файлами....124
Обработка ошибок и исключений....127
Работа с исключениями в Python....128
Вызов исключений....130
Определение пользовательских исключений....131
Модуль logging в Python....132
Основные компоненты системы легирования....133
Работа с модулем logging....135
Что стоит и не стоит записывать в журнал....141
Заключение....142
Вопросы....142
Дополнительные ресурсы....142
Ответы....142
Глава 5. Тестирование и автоматизация с помощью Python....144
Технические требования....145
Понимание различных уровней тестирования....145
Модульное тестирование....146
Интеграционное тестирование....146
Системное тестирование....146
Приемочное тестирование....147
Работа с тестовыми фреймворками Python....147
Работа с фреймворком unittest....149
Фреймворк тестирования pytest....158
Разработка через тестирование....166
Красный....166
Зеленый....167
Рефакторинг....167
Автоматизированная непрерывная интеграция....168
Заключение....169
Вопросы....169
Дополнительные ресурсы....169
Ответы....170
Глава 6. Дополнительные советы и приемы Python....171
Технические требования....171
Расширенные приемы использования функций в Python....172
Функции counter, itertools и zip для итерационных задач....172
Использование методов filter, map и reduce для преобразования данных....176
Создание лямбда-функций....179
Внедрение одной функции в другую....180
Изменение поведения функции с помощью декораторов....182
Расширенные концепции структур данных....188
Внедрение словаря в словарь....188
Использование включений....191
Введение в Pandas DataFrame....193
Операции с объектом DataFrame....194
Сложные случаи использования DataFrame....199
Заключение....204
Вопросы....205
Дополнительные ресурсы....205
Ответы....205
Раздел 3. Масштабирование за пределы одного потока....206
Глава 7. Многопроцессорная обработка, многопоточность и асинхронное программирование....208
Технические требования....209
Многопоточность в Python и ее ограничения....209
Слепое пятно Python....210
Ключевые компоненты многопоточного программирования на Python....211
Практический пример: многопоточное приложение для загрузки файлов с Google Диска....219
Многопроцессорная обработка....222
Создание нескольких процессов....222
Обмен данными между процессами....225
Обмен объектами между процессами....229
Синхронизация процессов....231
Практический пример: многопроцессорное приложение для загрузки файлов с Google Диска....232
Асинхронное программирование для адаптивных систем....234
Модуль asyncio....235
Распределение задач с помощью очередей....237
Практический пример: асинхронное приложение для загрузки файлов с Google Диска....239
Заключение....241
Вопросы....241
Дополнительные ресурсы....242
Ответы....242
Глава 8. Масштабирование Python с помощью кластеров....243
Технические требования....244
Возможности кластеров для параллельной обработки....244
Hadoop MapReduce....245
Apache Spark....247
Устойчивые распределенные наборы данных (RDD)....250
Операции с RDD....250
Создание RDD....251
PySpark для параллельной обработки данных....252
Создание программ SparkSession и SparkContext....254
PySpark для операций с RDD....255
PySpark DataFrames....258
PySpark SQL....262
Практические примеры использования Apache Spark и PySpark....263
Пример 1: калькулятор числа п в Apache Spark....263
Заключение....269
Вопросы....270
Дополнительные ресурсы....270
Ответы....271
Глава 9. Программирование на Python для облака....272
Технические требования....272
Знакомство с облачными возможностями для приложений Python....273
Среды разработки Python для облака....273
Облачные среды выполнения для Python....275
Создание веб-сервисов Python для облачного развертывания....277
Использование Google Cloud SDK....278
Использование веб-консоли GCP....285
Использование Google Cloud Platform для обработки данных....288
Введение в основы Apache Beam....288
Конвейеры Apache Beam....290
Создание конвейеров для Cloud Dataflow....295
Заключение....299
Вопросы....300
Дополнительные ресурсы....300
Ответы....301
Раздел 4. Python для веб-разработки, облака и сети....302
Глава 10. Использование Python для разработки веб-приложений и REST API....304
Технические требования....305
Требования к веб-разработке....305
Веб-фреймворки....305
Пользовательский интерфейс....306
Веб-серверсервер приложений....307
База данных....308
Безопасность....308
API....308
Документация....308
Знакомство с фреймворком Flask....309
Создание базового веб-приложения с маршрутизацией....309
Обработка запросов с разными типами НТТР-методов....311
Отображение статического и динамического контента....313
Извлечение параметров из НТТР-запроса....314
Взаимодействие с системами управления базами данных....316
Обработка ошибок и исключений в веб-приложениях....319
Создание REST API....322
Использование Flask для REST API....323
Разработка REST API для доступа к базе данных....325
Пример: создание веб-приложения с помощью REST API....327
Заключение....332
Вопросы....333
Дополнительные ресурсы....333
Ответы....333
Глава 11. Разработка микросервисов на Python....335
Технические требования....335
Введение в микросервисы....336
Практические рекомендации по созданию микросервисов....338
Создание приложений на базе микросервисов....339
Варианты разработки микросервисов на Python....340
Варианты развертывания микросервисов....341
Разработка приложения на основе микросервисов....342
Заключение....353
Вопросы....353
Дополнительные ресурсы....353
Ответы....354
Глава 12. Создание бессерверных функций на Python....355
Технические требования....356
Знакомство с бессерверными функциями....356
Преимущества бессерверных функций....357
Варианты использования....357
Варианты развертывания бессерверных функций....358
Написание бессерверных функций....359
Создание облачной функции на основе HTTP с помощью консоли GCP....360
Практический пример: создание приложения для уведомлений о событиях в облачном хранилище....364
Заключение....368
Вопросы....368
Дополнительные ресурсы....368
Ответы....368
Глава 13. Python и машинное обучение....370
Технические требования....371
Введение в машинное обучение....371
Использование Python для машинного обучения....373
Библиотеки машинного обучения в Python....373
Рекомендации по обучающим данным....375
Создание и оценка модели машинного обучения....376
Процесс построения модели машинного обучения....376
Создание примера машинного обучения....377
Оценка модели с помощью кросс-валидации и тонкой настройки гиперпараметров....382
Сохранение ML-модели в файл....385
Развертывание и прогнозирование ML-модели в GCP Cloud....386
Заключение....389
Вопросы....389
Дополнительные ресурсы....389
Ответы....390
Глава 14. Python для автоматизации сети....391
Технические требования....392
Введение в автоматизацию сети....392
Плюсы и минусы автоматизации сети....393
Варианты использования....394
Взаимодействие с сетевыми устройствами....395
Протоколы для взаимодействия с сетевыми устройствами....395
Взаимодействие с сетевыми устройствами с помощью библиотек Python на основе SSH....398
Взаимодействие с сетевыми устройствами с помощью NETCONF....405
Интеграция с системами управления сетью....409
Использование конечных точек сервиса определения местоположения....410
Получение токена аутентификации....411
Получение сетевых устройств и инвентаризация интерфейсов....412
Обновление порта на сетевом устройстве....413
Интеграция с событийно-ориентированными системами....415
Создание подписок для Apache Kafka....417
Обработка событий от Apache Kafka....418
Продление и удаление подписки....419
Заключение....419
Вопросы....420
Дополнительные ресурсы....420
Ответы....421
Предметный указатель....422
Книга подробно рассказывает о разработке, развертывании и поддержке крупномасштабных проектов на Python. Представлены такие концепции, как итераторы, генераторы, обработка ошибок и исключений, обработка файлов и ведение журналов. Приведены способы автоматизации тестирования приложений и разработки через тестирование (TDD). Рассказано о написании приложений с использованием кластера Apache Spark для обработки больших данных, о разработке и развертывании бессерверных программ в облаке на примере Google Cloud Platform (GCP), о создании веб-приложений и REST API, использовании среды Flask. Показаны способы применения языка для создания, обучения и оценки моделей машинного обучения, а также их развертывания в облаке, описаны приемы использования Python для извлечения данных с сетевых устройств и систем управления сетью (NMS).
Для программистов
Гик — человек, глубоко погруженный в мир компьютерных технологий, стремящийся досконально разобраться в наиболее важных мелочах и нюансах. Эта книга написана для гиков, увлеченных программированием на Python.
Книга раскрывает методы оптимального использования Python как с точки зрения проектирования, так и реализации практических задач. В ней подробно описан жизненный цикл крупномасштабного проекта на Python, показаны различные способы создания модульной архитектуры Python-проекта. Вы изучите лучшие практики и паттерны проектирования, узнаете, как масштабировать приложения на Python, как реализовать многопроцессорность и многопоточность. Вы поймете, как можно использовать Python не только для развертывания на одной машине, но также в частных и публичных облачных средах. Вы изучите методы обработки данных, сосредоточитесь на создании микросервисов и научитесь использовать Python для автоматизации сетей и машинного обучения. Наконец, вы узнаете, как применять описанные методы и практики в веб-разработке.