
Книга подробно рассказывает о разработке, развертывании и поддержке крупномасштабных проектов на Python. Представлены такие концепции, как итераторы, генераторы, обработка ошибок и исключений, обработка файлов и ведение журналов. Приведены способы автоматизации тестирования приложений и разработки через тестирование (TDD). Рассказано о написании приложений с использованием кластера Apache Spark для обработки больших данных, о разработке и развертывании бессерверных программ в облаке на примере Google Cloud Platform (GCP), о создании веб-приложений и REST API, использовании среды Flask. Показаны способы применения языка для создания, обучения и оценки моделей машинного обучения, а также их развертывания в облаке, описаны приемы использования Python для извлечения данных с сетевых устройств и систем управления сетью (NMS).
Для программистов
Создавайте эффективные приложения, используя лучшие практики программирования.
Гик — человек, глубоко погруженный в мир компьютерных технологий, стремящийся досконально разобраться в наиболее важных мелочах и нюансах. Эта книга написана для гиков, увлеченных программированием на Python.
Книга раскрывает методы оптимального использования Python как с точки зрения проектирования, так и реализации практических задач. В ней подробно описан жизненный цикл крупномасштабного проекта на Python, показаны различные способы создания модульной архитектуры Python-проекта. Вы изучите лучшие практики и паттерны проектирования, узнаете, как масштабировать приложения на Python, как реализовать многопроцессорность и многопоточность. Вы поймете, как можно использовать Python не только для развертывания на одной машине, но также в частных и публичных облачных средах. Вы изучите методы обработки данных, сосредоточитесь на создании микросервисов и научитесь использовать Python для автоматизации сетей и машинного обучения. Наконец, вы узнаете, как применять описанные методы и практики в веб-разработке.
Вы изучите:
- Принципы разработки и управления сложными проектами
- Способы автоматизации тестирования приложений и разработки через тестирование (TDD)
- Многопоточность и многопроцессорность в Python
- Написание приложений с использованием кластера Apache Spark для обработки больших данных
- Разработку и развертывание бессерверных программ в облаке на примере Google Cloud Platform (GCP)
- Создание на Python веб-приложений и REST API, использование среды Flask
- Использование Python для извлечения данных с сетевых устройств и систем управления сетью (NMS)
- Применение Python для анализа данных и машинного обучения
Книгу “Python для гиков” можно купить со скидкой в интернет-магазине издательства “БХВ“.
Об авторе. 14
О рецензентах. 15
Предисловие. 16
Для кого предназначена эта книга. 16
О чем эта книга. 17
Как получить максимальную отдачу от книги. 18
Загрузка файлов с примерами кода. 18
Условные обозначения. 19
Раздел 1. Python помимо основ. 21
Глава 1. Оптимальный жизненный цикл разработки на Python. 23
Культура и сообщество Python. 23
Этапы проекта Python. 26
Стратегия процесса разработки. 27
Итерация по этапам. 28
Стремление к MVP в первую очередь. 28
Стратегия разработки для специализированных предметных областей. 29
Эффективное документирование кода Python. 32
Комментарии Python. 32
Docstring. 32
Документация на уровне функций или классов. 34
Разработка эффективной схемы именования. 35
Методы. 36
Переменные. 36
Константы. 37
Классы. 37
Пакеты. 38
Модули. 38
Соглашения об импорте. 38
Аргументы. 38
Полезные инструменты. 38
Системы контроля версий. 39
Что не стоит хранить в репозитории системы контроля версий. 39
Понимание стратегий развертывания кода. 40
Пакетная разработка. 40
Среды разработки Python. 42
IDLE. 42
Sublime Text 42
Atom.. 42
PyCharm.. 42
Visual Studio Code. 43
PyDev. 43
Spyder 43
Заключение. 43
Вопросы. 44
Дополнительные ресурсы. 44
Ответы. 44
Глава 2. Использование модулей для сложных проектов. 45
Технические требования. 46
Знакомство с модулями и пакетами. 46
Импорт модулей. 46
Оператор import 48
Оператор __import__. 52
Инструмент importlib.import_module. 52
Абсолютный и относительный импорт. 53
Загрузка и инициализация модуля. 55
Загрузка модуля. 55
Установка параметров для специальных переменных. 55
Выполнение кода. 56
Стандартные модули. 57
Написание многоразовых модулей. 58
Независимая функциональность. 58
Генерализация функционала. 59
Традиционный стиль программирования. 60
Четко определенная документация. 61
Сборка пакетов. 62
Именование. 63
Файл инициализации пакета. 63
Сборка пакета. 63
Доступ к пакетам из любого расположения. 66
Общий доступ к пакету. 70
Создание пакета в соответствии с рекомендациями PyPA.. 70
Установка из локального исходного кода с помощью pip. 73
Публикация пакета в Test PyPI 75
Установка пакета из PyPI 76
Заключение. 77
Вопросы. 77
Дополнительные ресурсы. 77
Ответы. 78
Глава 3. Расширенное объектно-ориентированное программирование
на Python. 79
Технические требования. 80
Знакомство с классами и объектами. 80
Различия между атрибутами класса и атрибутами экземпляра. 80
Конструкторы и деструкторы классов. 83
Различия между методами класса и методами экземпляра. 84
Специальные методы. 85
Принципы ООП.. 86
Инкапсуляция данных. 87
Объединение данных и действий. 87
Сокрытие информации. 89
Защита данных. 91
Традиционный подход к использованию геттеров и сеттеров. 91
Использование декоратора property. 92
Расширение классов с помощью наследования. 94
Простое наследование. 94
Множественное наследование. 96
Полиморфизм. 97
Перегрузка метода. 97
Переопределение метода. 98
Абстракция. 100
Композиция как альтернативный подход к проектированию.. 102
Утиная типизация в Python. 104
Когда не стоит использовать ООП в Python. 105
Заключение. 106
Вопросы. 106
Дополнительные ресурсы. 107
Ответы. 107
Раздел 2. Расширенные концепции программирования. 109
Глава 4. Библиотеки Python для продвинутого программирования. 111
Технические требования. 111
Введение в контейнеры данных Python. 112
Строки. 112
Списки. 113
Кортежи. 114
Словари. 114
Множества. 115
Итераторы и генераторы для обработки данных. 116
Итераторы. 116
Генераторы. 120
Обработка файлов в Python. 122
Операции с файлами. 123
Обработка ошибок и исключений. 126
Работа с исключениями в Python. 127
Вызов исключений. 129
Определение пользовательских исключений. 130
Модуль logging в Python. 131
Основные компоненты системы логирования. 132
Работа с модулем logging. 134
Что стоит и не стоит записывать в журнал. 140
Заключение. 141
Вопросы. 141
Дополнительные ресурсы. 141
Ответы. 141
Глава 5. Тестирование и автоматизация с помощью Python. 143
Технические требования. 144
Понимание различных уровней тестирования. 144
Модульное тестирование. 145
Интеграционное тестирование. 145
Системное тестирование. 145
Приемочное тестирование. 146
Работа с тестовыми фреймворками Python. 146
Работа с фреймворком unittest 148
Фреймворк тестирования pytest 157
Разработка через тестирование. 165
Красный. 165
Зеленый. 166
Рефакторинг. 166
Автоматизированная непрерывная интеграция. 167
Заключение. 168
Вопросы. 168
Дополнительные ресурсы. 168
Ответы. 169
Глава 6. Дополнительные советы и приемы Python. 170
Технические требования. 170
Расширенные приемы использования функций в Python. 171
Функции counter, itertools и zip для итерационных задач. 171
Использование методов filter, map и reduce для преобразования данных. 175
Создание лямбда-функций. 178
Внедрение одной функции в другую.. 179
Изменение поведения функции с помощью декораторов. 181
Расширенные концепции структур данных. 187
Внедрение словаря в словарь. 187
Использование включений. 190
Введение в Pandas DataFrame. 192
Операции с объектом DataFrame. 193
Сложные случаи использования DataFrame. 198
Заключение. 203
Вопросы. 204
Дополнительные ресурсы. 204
Ответы. 204
Раздел 3. Масштабирование за пределы одного потока. 205
Глава 7. Многопроцессорная обработка, многопоточность
и асинхронное программирование. 207
Технические требования. 208
Многопоточность в Python и ее ограничения. 208
Слепое пятно Python. 209
Ключевые компоненты многопоточного программирования на Python. 210
Практический пример: многопоточное приложение для загрузки файлов
с Google Диска. 218
Многопроцессорная обработка. 221
Создание нескольких процессов. 221
Обмен данными между процессами. 224
Обмен объектами между процессами. 228
Синхронизация процессов. 230
Практический пример: многопроцессорное приложение
для загрузки файлов с Google Диска. 231
Асинхронное программирование для адаптивных систем. 233
Модуль asyncio. 234
Распределение задач с помощью очередей. 236
Практический пример: асинхронное приложение для загрузки файлов
с Google Диска. 238
Заключение. 240
Вопросы. 240
Дополнительные ресурсы. 241
Ответы. 241
Глава 8. Масштабирование Python с помощью кластеров. 242
Технические требования. 243
Возможности кластеров для параллельной обработки. 243
Hadoop MapReduce. 244
Apache Spark. 246
Устойчивые распределенные наборы данных (RDD) 249
Операции с RDD.. 249
Создание RDD.. 250
PySpark для параллельной обработки данных. 251
Создание программ SparkSession и SparkContext 253
PySpark для операций с RDD.. 254
PySpark DataFrames 257
PySpark SQL. 261
Практические примеры использования Apache Spark и PySpark. 262
Пример 1: калькулятор числа π в Apache Spark. 262
Заключение. 268
Вопросы. 269
Дополнительные ресурсы. 269
Ответы. 270
Глава 9. Программирование на Python для облака. 271
Технические требования. 271
Знакомство с облачными возможностями для приложений Python. 272
Среды разработки Python для облака. 272
Облачные среды выполнения для Python. 274
Создание веб-сервисов Python для облачного развертывания. 276
Использование Google Cloud SDK.. 277
Использование веб-консоли GCP. 284
Использование Google Cloud Platform для обработки данных. 287
Введение в основы Apache Beam.. 287
Конвейеры Apache Beam.. 289
Создание конвейеров для Cloud Dataflow.. 294
Заключение. 298
Вопросы. 299
Дополнительные ресурсы. 299
Ответы. 300
Раздел 4. Python для веб-разработки, облака и сети. 301
Глава 10. Использование Python для разработки веб-приложений
и REST API 303
Технические требования. 304
Требования к веб-разработке. 304
Веб-фреймворки. 304
Пользовательский интерфейс. 305
Веб-сервер/сервер приложений. 306
База данных. 307
Безопасность. 307
API 307
Документация. 307
Знакомство с фреймворком Flask. 308
Создание базового веб-приложения с маршрутизацией. 308
Обработка запросов с разными типами HTTP-методов. 310
Отображение статического и динамического контента. 312
Извлечение параметров из HTTP-запроса. 313
Взаимодействие с системами управления базами данных. 315
Обработка ошибок и исключений в веб-приложениях. 318
Создание REST API 321
Использование Flask для REST API 322
Разработка REST API для доступа к базе данных. 324
Пример: создание веб-приложения с помощью REST API 326
Заключение. 331
Вопросы. 332
Дополнительные ресурсы. 332
Ответы. 332
Глава 11. Разработка микросервисов на Python. 334
Технические требования. 334
Введение в микросервисы. 335
Практические рекомендации по созданию микросервисов. 337
Создание приложений на базе микросервисов. 338
Варианты разработки микросервисов на Python. 339
Варианты развертывания микросервисов. 340
Разработка приложения на основе микросервисов. 341
Заключение. 352
Вопросы. 352
Дополнительные ресурсы. 352
Ответы. 353
Глава 12. Создание бессерверных функций на Python. 354
Технические требования. 355
Знакомство с бессерверными функциями. 355
Преимущества бессерверных функций. 356
Варианты использования. 356
Варианты развертывания бессерверных функций. 357
Написание бессерверных функций. 358
Создание облачной функции на основе HTTP с помощью консоли GCP. 359
Практический пример: создание приложения для уведомлений
о событиях в облачном хранилище. 363
Заключение. 367
Вопросы. 367
Дополнительные ресурсы. 367
Ответы. 367
Глава 13. Python и машинное обучение. 369
Технические требования. 370
Введение в машинное обучение. 370
Использование Python для машинного обучения. 372
Библиотеки машинного обучения в Python. 372
Рекомендации по обучающим данным. 374
Создание и оценка модели машинного обучения. 375
Процесс построения модели машинного обучения. 375
Создание примера машинного обучения. 376
Оценка модели с помощью кросс-валидации и тонкой настройки гиперпараметров. 381
Сохранение ML-модели в файл. 384
Развертывание и прогнозирование ML-модели в GCP Cloud. 385
Заключение. 388
Вопросы. 388
Дополнительные ресурсы. 388
Ответы. 389
Глава 14. Python для автоматизации сети. 390
Технические требования. 391
Введение в автоматизацию сети. 391
Плюсы и минусы автоматизации сети. 392
Варианты использования. 393
Взаимодействие с сетевыми устройствами. 394
Протоколы для взаимодействия с сетевыми устройствами. 394
Взаимодействие с сетевыми устройствами с помощью библиотек Python
на основе SSH.. 397
Взаимодействие с сетевыми устройствами с помощью NETCONF. 404
Интеграция с системами управления сетью.. 408
Использование конечных точек сервиса определения местоположения. 409
Получение токена аутентификации. 410
Получение сетевых устройств и инвентаризация интерфейсов. 411
Обновление порта на сетевом устройстве. 412
Интеграция с событийно-ориентированными системами. 414
Создание подписок для Apache Kafka. 416
Обработка событий от Apache Kafka. 417
Продление и удаление подписки. 418
Заключение. 418
Вопросы. 419
Дополнительные ресурсы. 419
Ответы. 420
Предметный указатель. 421

Мухаммад Азиф — программный архитектор, обладающий обширным опытом в области веб-разработки, автоматизации сетей и облаков, виртуализации и машинного обучения. ,Возглавлял многие крупномасштабные проекты в различных коммерческих компаниях. В 2012 году, получил степень доктора философии в области компьютерных систем в Карлтонском университете (Оттава, Канада) и в настоящее время работает в компании Nokia в качестве ведущего специалиста.
-
НОВИНКА
Python для гиков
1125 ₽
844 ₽