Глава 24 · Что дальше? Roadmap Python-разработчика

Professional Python Core

Идиомы языка, модель итерации, типы, ресурсы, пакеты и конкурентность как общий фундамент Python-разработчика.

Слой между синтаксисом и специализацией

Professional Python Core нужен во всех направлениях. Его не проходят за один выходной и не изучают изолированными трюками. Каждый блок имеет предпосылку, рабочую задачу и наблюдаемый критерий понимания.

БлокЗачем и когдаПредпосылка и критерий
Comprehensions, распаковка, срезыКомпактно преобразовывать коллекции и явно раскладывать значения.После списков и циклов. Вы можете выбрать читаемую форму и не прятать сложную логику в одной строке.
Iterable, iterator, generatorОбрабатывать поток значений без обязательного хранения всего результата.После функций и циклов. Вы объясняете разницу между объектом, итератором и ленивым генератором.
Замыкания и декораторыНастраивать поведение функций и отделять сквозную логику.После функций как объектов. Вы сохраняете сигнатуру и понимаете порядок вызовов.
Exceptions и context managersГарантировать освобождение ресурса и делать отказ частью контракта.После try/except и файлов. Вы различаете ожидаемое исключение, cleanup и подавление ошибки.
dataclasses и enumsОписывать данные и конечный набор состояний без лишнего шаблонного кода.После классов. Инварианты не растворены в наборе строковых литералов.
Typing, aliases, generics, ProtocolСделать интерфейсы видимыми для читателя и статического анализатора.После функций и классов. Вы помните, что аннотации сами по себе не проверяются Python во время выполнения.

Зависимости внутри Core

Functionsвызов, параметры,returnFirst-classfunctionsфункция как значениеClosuresсохранённое окружениеDecoratorsуправляемая обёрткаповедения
Decorators опираются на функции как объекты и замыкания; изучать их как отдельный синтаксический трюк недостаточно.
LoopsпоследовательныйобходIteration modeliterable и iterIteratorprotocolnext и StopIterationGeneratorsленивое производствозначений
Generators становятся понятными после протокола итератора, а не до него.

Стандартная библиотека как рабочий инструмент

Библиотека по назначению, а не по алфавиту
КОЛЛЕКЦИИ
collections
collections.abc
подходящая структура вместо случайного list
ВРЕМЯ
datetime
timezone-aware значения
явный формат обмена
ПУТИ И ДАННЫЕ
pathlib
json
кодировка UTF-8
схема и валидация
ТЕКСТ
re
шаблон только там, где он проще явного разбора
тесты граничных строк
РЕСУРСЫ
contextlib
with
детерминированное освобождение
ДИАГНОСТИКА
logging
уровни и контекст
не заменять логами тесты
Изучайте модуль тогда, когда он решает реальную задачу проекта.

Модули, окружения и поставка

Следующий уровень модульности начинается с ясных импортов и пакета, у которого есть публичный интерфейс. Виртуальное окружение изолирует зависимости проекта. Описание в pyproject.toml фиксирует метаданные и инструменты сборки. Версии зависимостей должны быть воспроизводимыми настолько, насколько требует проект; слепое закрепление каждой транзитивной версии и полное отсутствие ограничений создают разные риски.

Асинхронность и конкурентность

МодельПодходитНе решает автоматически
asyncioМного операций ожидания с библиотеками, поддерживающими async.CPU-bound вычисления и блокирующие вызовы внутри event loop.
threadsБлокирующий I/O и библиотеки с обычным синхронным API.Упрощение общего изменяемого состояния.
processesИзоляция и параллельные CPU-bound задачи.Бесплатный обмен большими данными и мгновенный старт.

Сначала измерьте характер нагрузки. Затем выберите модель и явно определите отмену, тайм-ауты, завершение, повтор операции и границы общего состояния. Само слово async не делает программу быстрее.

Порядок освоения
Начните с идиом коллекций и итерационной модели. Затем углубите исключения, контекстные менеджеры, структуры данных и typing. Пакеты и окружения изучайте на реальном проекте. Конкурентность добавляйте после появления измеримой задачи.
Официальная документация
Python data model
typing: Support for type hints
contextlib: Utilities for with-statement contexts
The Python Standard Library
venv: Creation of virtual environments
Python Packaging User Guide
asyncio: Asynchronous I/O
Concurrent Execution