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
Стандартная библиотека как рабочий инструмент
Модули, окружения и поставка
Следующий уровень модульности начинается с ясных импортов и пакета, у которого есть
публичный интерфейс. Виртуальное окружение изолирует зависимости проекта. Описание в
pyproject.toml фиксирует метаданные и инструменты сборки.
Версии зависимостей должны быть воспроизводимыми настолько, насколько требует проект;
слепое закрепление каждой транзитивной версии и полное отсутствие ограничений создают
разные риски.
Асинхронность и конкурентность
| Модель | Подходит | Не решает автоматически |
|---|---|---|
| asyncio | Много операций ожидания с библиотеками, поддерживающими async. | CPU-bound вычисления и блокирующие вызовы внутри event loop. |
| threads | Блокирующий I/O и библиотеки с обычным синхронным API. | Упрощение общего изменяемого состояния. |
| processes | Изоляция и параллельные CPU-bound задачи. | Бесплатный обмен большими данными и мгновенный старт. |
Сначала измерьте характер нагрузки. Затем выберите модель и явно определите
отмену, тайм-ауты, завершение, повтор операции и границы общего состояния. Само слово
async не делает программу быстрее.