Национальный цифровой ресурс Руконт - межотраслевая электронная библиотека (ЭБС) на базе технологии Контекстум (всего произведений: 635043)
Контекстум
Руконтекст антиплагиат система

Профессиональная разработка на Python (5000,00 руб.)

0   0
Первый авторУилкс Мэттью
ИздательствоМ.: ДМК Пресс
Страниц504
ID810708
АннотацияВ этой книге объясняются языковые средства Python, которые обычно не рассматриваются в пособиях: от повторно используемых консольных скриптов, которые одновременно играют роль микросервисов благодаря точкам входа, до эффективного использования модуля asyncio для объединения данных из различных источников. Попутно рассматривается проверка соблюдения стандартов кодирования с помощью аннотаций типов, тестирование с низкими накладными расходами и другие автоматизированные проверки качества кода, применяемые на практике для организации процесса разработки надежного ПО. Некоторые мощные возможности Python зачастую иллюстрируются на искусственных примерах, когда то или иное средство описывается в изоляции от всего остального. Здесь же на примере проектирования и создания реального приложения от прототипа до готового продукта читатель видит не только, как работают различные части программы, но и как они интегрируются в процессе разработки более крупной системы. Кроме того, в книге присутствуют интересные отступления и рекомендации по использованию библиотек, взятые из сессий вопросов и ответов на конференциях по Python, а также обсуждение современных передовых практик и методов, позволяющих создавать ясный и удобный для сопровождения код.
Кому рекомендованоЭта книга ориентирована на разработчиков, которые уже умеют писать простые программы на Python и хотят разобраться в том, когда уместно использовать новые прогрессивные средства языка.
ISBN978-5-97060-930-9
УДК004.94
ББК32.972
Уилкс, М. . Профессиональная разработка на Python / М. . Уилкс .— Москва : ДМК Пресс, 2021 .— 504 с. : ил. — ISBN 978-5-97060-930-9 .— URL: https://rucont.ru/efd/810708 (дата обращения: 04.05.2024)

Предпросмотр (выдержки из произведения)

Профессиональная_разработка_на_Python.pdf
Стр.5
Стр.6
Стр.7
Стр.8
Стр.9
Стр.10
Стр.11
Стр.12
Профессиональная_разработка_на_Python.pdf
УДК 004.94 ББК 32.972 У36 У36 Профессиональная разработка на Python / пер. с англ. А. А. Слинкина. – М.: ДМК Пресс, 2021. – 502 с.: ил. Уилкс М. ISBN 978-5-97060-930-9 В этой книге объясняются языковые средства Python, которые обычно не рассматриваются в пособиях: от повторно используемых консольных скриптов, которые одновременно играют роль микросервисов благодаря точкам входа, до эффективного использования модуля asyncio для объединения данных из различных источников. Попутно рассматривается проверка соблюдения стандартов кодирования с по мощью аннотаций типов, тестирование с низкими накладными расходами и другие автоматизированные проверки качества кода, применяемые на практике для организации процесса разработки надежного ПО. Некоторые мощные возможности Python зачастую иллюстрируются на искусственных примерах, когда то или иное средство описывается в изоляции от всего остального. Здесь же на примере проектирования и создания реального приложения от прототипа до готового продукта читатель видит не только, как работают различные части программы, но и как они интегрируются в процессе разработки более крупной системы. Кроме того, в книге присутствуют интересные отступления и рекомендации по использованию библиотек, взятые из сессий вопросов и ответов на конференциях по Python, а также обсуждение современных передовых практик и методов, позволяющих создавать ясный и удобный для сопровождения код. Эта книга ориентирована на разработчиков, которые уже умеют писать простые программы на Python и хотят разобраться в том, когда уместно использовать новые прогрессивные средства языка. УДК 004.94 ББК 32.972 First published in English under the title Advanced Python Development; Using Powerful Language Features in Real­World Applicationsby Matthew Wilkes, edition. This edition has been translated and published under licence from APress Media, LLC, part of Springer Nature. APress Media, LLC, part of Springer Nature takes no responsibility and shall not be made liable for the accuracy of the translation. Russian language edition copyright © 2021 by DMK Press. All rights reserved. Все права защищены. Любая часть этой книги не может быть воспроизведена в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. ISBN 978­1­4842­5792­0 (англ.) ISBN 978­5­97060­930­9 (рус.) © Matthew Wilkes, 2020 © Оформление, издание, перевод, ДМК Пресс, 2021
Стр.5
Содержание От издательства ....................................................................................................12 Об авторе .................................................................................................................13 О технических рецензентах ...........................................................................14 Благодарности ......................................................................................................16 Введение ..................................................................................................................17 Глава 1. Прототипирование и среды разработки ...............................22 Прототипирование в Python ............................................................................22 Прототипирование с по мощью REPL .........................................................23 Прототипирование с по мощью Python­скрипта ......................................26 Прототипирование с по мощью скриптов и pdb .......................................27 Посмертная отладка ......................................................................................28 Прототипирование с по мощью Jupyter......................................................30 Блокноты ........................................................................................................31 Прототипирование в этой главе .................................................................33 Подготовка окружения .....................................................................................34 Подготовка нового проекта .............................................................................35 Прототипирование скриптов ......................................................................37 Установка зависимостей ..............................................................................40 Экспорт в py­файл .............................................................................................42 Построение интерфейса командной строки .................................................44 Модуль sys и переменная argv .....................................................................45 argparse ...........................................................................................................47 click ..................................................................................................................48 Окончательный скрипт ....................................................................................58 Резюме.................................................................................................................59 Дополнительные ресурсы ............................................................................59 Глава 2. Тестирование, проверка типов, стандарты Расширение границ возможного ....................................................................51 Удаленные ядра .............................................................................................51 Разработка кода, который невозможно выполнить локально ...............54 кодирования ..........................................................................................................61 Тестирование .....................................................................................................64 Когда писать тесты ........................................................................................66 Создание функций форматирования для повышения тестопригодности .........................................................................................67
Стр.6
6  Содержание pytest ...............................................................................................................70 Автономное, интеграционное и функциональное тестирование .........71 Фикстуры Pytest .............................................................................................74 Покрытие ........................................................................................................78 Проверка типов ..................................................................................................82 Установка mypy ..............................................................................................83 Добавление аннотаций типов .....................................................................83 Подклассы и наследование ..........................................................................86 Обобщенные типы ........................................................................................88 Отладка и чрезмерное увлечение типизацией .........................................90 Когда прибегать к типизации, а когда избегать ее ..................................92 Хранение аннотаций типов отдельно от кода ..........................................93 Стандарты кодирования ...................................................................................95 Установка flake8 и black ................................................................................96 Исправление существующего кода ............................................................96 Автоматический прогон ..............................................................................98 Применение к запросам на включение изменений ................................99 Резюме...............................................................................................................100 Дополнительные ресурсы ..........................................................................102 Глава 3. Скрипты для создания пакетов ................................................103 Терминология ..................................................................................................104 Структура каталога ..........................................................................................105 Скрипты настройки и метаданные...............................................................107 Зависимости .....................................................................................................108 Декларативные конфигурации .....................................................................109 Чего избегать в файле setup.py ..................................................................110 Условные зависимости ...............................................................................110 Файл Readme в метаданных ......................................................................112 Номера версий .............................................................................................114 Использование файла setup.cfg .................................................................115 Специальные серверы каталогов ..................................................................117 Настройка pypiserver ...................................................................................118 Устойчивость к сбоям .................................................................................119 Конфиденциальность .................................................................................120 Целостность..................................................................................................121 Формат wheel и выполнение кода при установке ..................................122 Создание wheel­файлов по существующим дистрибутивам ................123 Установка консольного скрипта с помощью точек входа .........................125 Файлы README, DEVELOP и CHANGES ........................................................126 Формат Markdown .......................................................................................127 Формат reStructured ....................................................................................128 Файл README ..............................................................................................130 Файл CHANGES.md и номера версий .......................................................131 Семантическое версионирование ............................................................131 Календарное версионирование ................................................................132 Закрепление версий зависимостей ..............................................................132
Стр.7
Содержание  7 Слабое закрепление ....................................................................................133 Строгое закрепление ..................................................................................133 Какую схему закрепления использовать .................................................134 Загрузка версии на сервер..............................................................................135 Конфигурирование twine ...........................................................................136 Резюме...............................................................................................................137 Дополнительные ресурсы ..........................................................................137 Глава 4. От скрипта к каркасу ......................................................................139 Написание плагина датчика ..........................................................................140 Разработка плагина.....................................................................................141 Добавление нового параметра командной строки ....................................144 Подкоманды .................................................................................................144 Опции командной строки ..........................................................................147 Обработка ошибок ......................................................................................148 Делегирование разбора аргументов Click ...............................................151 Поддержка Click пользовательских типов аргументов .........................152 Встроенные параметры ..............................................................................154 Разрешение сторонних плагинов датчиков ................................................155 Обнаружение плагинов по фиксированным именам ............................157 Обнаружение плагинов с по мощью точек входа ....................................158 Конфигурационные файлы ........................................................................161 Переменные окружения .............................................................................164 Сравнение apd.sensors с похожими программами ................................165 Резюме...............................................................................................................166 Дополнительные ресурсы ..........................................................................167 Глава 5. Альтернативные интерфейсы ....................................................168 Веб­микросервисы ..........................................................................................168 WSGI ..............................................................................................................169 Проектирование API ...................................................................................174 Аутентификация ..........................................................................................176 Flask ...............................................................................................................176 Декораторы в Python ..................................................................................179 Замыкания ....................................................................................................180 Модификация переменных в родительских областях видимости ......181 Простые декораторы ...................................................................................183 Декораторы с аргументами .......................................................................184 Безопасность на основе декораторов.......................................................186 Тестирование функции представления ...................................................190 Развертывание .............................................................................................192 Расширение программного обеспечения третьей стороной ....................194 Согласование ситуативной сигнатуры с равноправными пользователями ...........................................................................................199 Абстрактные базовые классы ...................................................................201 Запасные стратегии ....................................................................................204
Стр.8
8  Содержание Паттерн Адаптер .........................................................................................205 Динамическое генерирование класса ......................................................206 Другие форматы сериализации ................................................................207 Собираем все вместе ...................................................................................209 Исправление ошибки сериализации в нашем коде ...................................211 Наведение порядка .....................................................................................213 Версионирование API .....................................................................................214 Тестопригодность ........................................................................................216 Резюме...............................................................................................................217 Дополнительные ресурсы ..........................................................................218 Глава 6. Процесс агрегирования ................................................................219 Cookiecutter ......................................................................................................219 Создание нового шаблона ..........................................................................220 Создание пакета агрегирования ...................................................................223 Типы баз данных .........................................................................................224 Наш пример .................................................................................................227 Объектно­реляционные отображения .....................................................228 Версионирование базы данных ................................................................232 Другие полезные команды alembic ..........................................................236 Загрузка данных ..........................................................................................237 Новые технологии ...........................................................................................244 Базы данных .................................................................................................244 Поведение пользовательских атрибутов .................................................244 Генераторы ...................................................................................................244 Резюме...............................................................................................................245 Дополнительные ресурсы ..........................................................................245 Глава 7. Распараллеливание и асинхронное программирование...........................................................................................246 Неблокирующий ввод­вывод.........................................................................247 Делаем код неблокирующим .....................................................................251 Многопоточная и многопроцессная обработка ..........................................253 Низкоуровневые потоки ............................................................................253 Байт­код ........................................................................................................257 GIL ..................................................................................................................258 Блокировки и взаимоблокировки ............................................................260 Взаимоблокировки......................................................................................262 Избегайте глобального состояния ............................................................265 Объединение данных .................................................................................265 Передача данных .........................................................................................266 Другие примитивы синхронизации .........................................................269 Реентерабельные блокировки ...................................................................270 Условия..........................................................................................................270 Барьеры .........................................................................................................273 Событие ........................................................................................................274
Стр.9
Содержание  9 Семафор ........................................................................................................275 Объекты ProcessPoolExecutor ....................................................................276 Делаем нашу программу многопоточной ...............................................277 Асинхронный ввод­вывод ..............................................................................278 async def ........................................................................................................278 await ...............................................................................................................279 async for .........................................................................................................281 async with ......................................................................................................285 Асинхронные примитивы блокировки ....................................................286 Работа совместно с синхронными библиотеками .................................287 Делаем программу асинхронной ..............................................................289 Сравнение .........................................................................................................292 Как сделать выбор ...........................................................................................293 Резюме...............................................................................................................295 Дополнительные ресурсы ..........................................................................295 Глава 8. Дополнительные вопросы асинхронного ввода-вывода ......................................................................................................296 Тестирование асинхронного кода .................................................................296 Тестирование нашей программы .............................................................298 Тестовые серверы и фикстуры pytest с очисткой ...................................298 Область видимости фикстур ......................................................................302 Использование подставных объектов для упрощения автономного тестирования .......................................................................305 Подставные объекты с ветвящейся логикой ...........................................308 Классы данных .............................................................................................309 Тестовые методы .........................................................................................312 Асинхронная работа с базами данных .........................................................314 Классический стиль SQLAlchemy ..............................................................315 Неоткомпилированная ...............................................................................316 mssql ..............................................................................................................316 mysql ..............................................................................................................316 Postgresql ......................................................................................................317 sqlite ..............................................................................................................317 Использование метода run_in_executor ...................................................318 Запрос данных .............................................................................................320 Избегайте сложных запросов ....................................................................322 Запросы к представлениям........................................................................329 Альтернативы ..............................................................................................332 Глобальные переменные в асинхронном коде ...........................................333 Резюме...............................................................................................................335 Дополнительные ресурсы ..............................................................................336 Глава 9. Просмотр данных ............................................................................337 Функции запроса .............................................................................................337 Фильтрация данных ....................................................................................343
Стр.10
10  Содержание Многоуровневые итераторы .....................................................................345 Дополнительные фильтры .........................................................................351 Тестирование функций запроса ................................................................352 Параметрические тесты .............................................................................354 Отображение нескольких датчиков ..............................................................355 Обработка данных ...........................................................................................359 Интерактивная работа с виджетами Jupyter ...............................................363 Глубоко вложенный синхронный и асинхронный коды .......................364 Наведем порядок .........................................................................................369 Сохранение оконечных точек ........................................................................370 Нанесение географических данных на карты .............................................371 Новые типы графиков ................................................................................373 Поддержка карт в пакете apd.aggregation................................................375 Обратная совместимость в классах данных ............................................376 Построение карты с применением новых конфигурационных объектов ........................................................................................................378 Резюме...............................................................................................................380 Дополнительные ресурсы ..........................................................................381 Глава 10. Повышение быстродействия ..................................................382 Оптимизация функции...................................................................................382 Профилирование и потоки ........................................................................384 Интерпретация отчета профилировщика ...............................................387 Другие профилировщики ..........................................................................389 timeit .............................................................................................................389 line_profiler ...................................................................................................390 yappi ..............................................................................................................390 Tracemalloc ...................................................................................................393 New Relic .......................................................................................................394 Оптимизация потока управления ................................................................395 Сложность .....................................................................................................395 Визуализация данных профилирования .................................................399 Кеширование ...............................................................................................402 Кешированные свойства ............................................................................409 Резюме...............................................................................................................411 Дополнительные ресурсы ..........................................................................411 Глава 11. Отказоустойчивость .....................................................................413 Обработка ошибок ...........................................................................................413 Получение элементов из контейнера ......................................................414 Абстрактные базовые классы ....................................................................414 Типы исключений .......................................................................................417 Пользовательские исключения .................................................................419 Создание новых типов исключений .........................................................420 Дополнительные метаданные ...................................................................422 Трасса вызовов при наличии нескольких исключений ........................423
Стр.11
Содержание  11 Исключение в блоке except или finally .....................................................424 raise from .......................................................................................................425 Тестирование обработки исключений .....................................................427 Новые поведения ........................................................................................427 Еще о подставных объектах и unittest.Mock ...........................................430 Предупреждения ..............................................................................................432 Фильтры предупреждений.........................................................................435 Протоколирование ..........................................................................................437 Вложенные регистраторы ..........................................................................438 Пользовательские действия .......................................................................439 Дополнительные метаданные ...................................................................440 Конфигурация протоколирования ...........................................................445 Другие обработчики....................................................................................446 Контрольные журналы ...............................................................................446 Избегание проблем на этапе проектирования ...........................................447 Опрос датчиков по расписанию ...............................................................448 API и фильтрация ........................................................................................451 Резюме...............................................................................................................452 Дополнительные ресурсы ..........................................................................453 Глава 12. Обратные вызовы и анализ данных ...................................454 Поток данных генератора ..............................................................................454 Генераторы, потребляющие свой собственный выход ..........................456 Улучшенные генераторы ............................................................................459 Использование классов ..............................................................................462 Использование улучшенного генератора для обертывания итерируемого объекта ................................................................................463 Рефакторинг функций, возвращающих излишние значения ..............464 Очереди ........................................................................................................466 Выбор потока управления .........................................................................468 Конструкция для наших действий ................................................................469 Сопрограммы для анализа .........................................................................470 Подача данных .............................................................................................475 Выполнение процесса анализа .................................................................478 Состояния процесса ........................................................................................480 Обратные вызовы........................................................................................483 Расширение состава имеющихся действий .................................................485 Резюме...............................................................................................................488 Дополнительные ресурсы ..........................................................................488 Эпилог .....................................................................................................................490 Предметный указатель ...................................................................................492
Стр.12

Облако ключевых слов *


* - вычисляется автоматически
Антиплагиат система на базе ИИ