python
Python для JS/TS-разработчиков
Освой Python, придя из JavaScript — ядро языка, скриптинг и автоматизация, с прицелом на AI-инструменты.
Начать трек → 00
С нуля
Зачем JS/TS-разработчику добавлять Python и чем он отличается. 01
Ядро языка
Синтаксис, встроенные структуры данных и чем типизация отличается от TS. 02
Скриптинг и ввод-вывод
Файлы, HTTP и упаковка — достаточно, чтобы написать полезный скрипт автоматизации. 03
Модель данных Python
Всё — объект с протоколом: dunder-методы задают поведение, дескрипторы двигают атрибуты, а __slots__ — рычаг памяти. 01 Протоколы дандеров: __repr__, контракт eq/hash, истинность и NotImplemented 17 мин 02 Поиск атрибутов и дескрипторы: почему словарь экземпляра не всегда побеждает 19 мин 03 Классы, датаклассы и __slots__: сгенерированный бойлерплейт и словарь экземпляра 18 мин 04 Итераторы и генераторы: спящие кадры, ленивые конвейеры и файл, который так и не закрылся 19 мин
04
Типизация и современный тулчейн
Тайп-хинты — статический контракт, который рантайм игнорирует: mypy/pyright его проверяют, дженерики и протоколы выражают, uv и ruff доставляют. 01 Тайп-хинты как система: объединения, TypedDict, Literal и типизация границ в первую очередь 17 мин 02 Дженерики и Protocol: синтаксис PEP 695, вариантность без махания руками, структурная типизация 19 мин 03 Чекеры в бою: сужение типов, строгость, зараза Any и mypy против pyright 19 мин 04 Тулчейн 2025 года: uv для окружений и локов, ruff для линта и форматирования, один pyproject.toml 17 мин
05
Конкурентность: GIL, потоки, asyncio
GIL сериализует байткод, а не I/O: потоки — ждать, процессы — считать, asyncio — тысячи сокетов; free-threading меняет правила. 01 GIL честно: что он сериализует, зачем он refcounting и что меняет free-threading в 3.13 18 мин 02 Потоки против процессов: выбор по нагрузке, гонки под GIL и дедлок fork+threads 18 мин 03 asyncio честно: приостанавливаемые фреймы, await как единственная точка переключения и блокирующий вызов, морозящий всех 20 мин 04 Структурная конкурентность: TaskGroup, except*, asyncio.timeout и почему голый create_task — утечка 20 мин
06
Веб-сервисы: ASGI и FastAPI
ASGI — контракт, FastAPI — эргономика: pydantic валидирует на границе, sync-хендлеры блокируют цикл, lifespan владеет ресурсами. 01 ASGI и FastAPI: контракт scope/receive/send и один блокирующий вызов, который стопорит воркер 18 мин 02 Pydantic v2: парсинг на границе, доверие внутри — коэрция, валидаторы и фильтрация response_model 18 мин 03 Жизненный цикл запроса: луковица middleware, резолв зависимостей, lifespan и где всплывают ошибки 19 мин
07
Тестирование с pytest
pytest — это фикстуры и assert, а не классы: parametrize убивает копипасту, фикстуры — генераторы с teardown, hypothesis находит кейсы, которые вы не нашли. 08
Производительность: профилирование и пределы
Профилируй до правок: cProfile врёт под потоками, py-spy сэмплирует прод, у объектов памятный оверхед, и часть задач — не для Python. 01 Профилирование с cProfile и py-spy: измерьте продакшен-нагрузку до правок кода 18 мин 02 Память и объекты: почему int стоит 28 байт и где на самом деле живёт утечка 18 мин 03 C-расширения честно: лестница вариантов, граница GIL и налог на маршалинг 18 мин 04 Когда Python — не тот инструмент: дерево решений и арифметика зарплат против серверов 16 мин
09
Работа с данными: pandas, polars, форматы
DataFrame — прагматика, а не магия: pandas против polars честно, parquet вместо csv, пайплайны с валидацией на каждой границе. 01 pandas и Polars прагматично: колоночные блоки, eager против lazy и ловушки, кусающие в продакшене 18 мин 02 Форматы файлов: CSV на краях, Parquet внутри — row groups, статистики, Arrow и компромиссы сжатия 17 мин 03 Пайплайны и валидация: контракты на границах, идемпотентная запись и тихо исчезающие строки 19 мин
10
Пакеты и дистрибуция
Импорты — это рантайм-система: механика пакетов и sys.path, pyproject как единый источник, lock-файлы делают установку воспроизводимой. 11
Асинхронность изнутри
Event loop — планировщик, который можно прочитать: шаги задач, отмена как внедрённое исключение, таймауты как scoped cancel, мосты в sync. 01 Одна итерация цикла под микроскопом: ready-очередь, опрос селектора, куча таймеров и какие await реально уступают 19 мин 02 Семантика отмены: внедрённый CancelledError, баг бессмертия через голый except и уборка, обязанная пере-бросить 18 мин 03 Таймауты и shield: scoped cancel с конверсией в TimeoutError, дедлайны по цепочке и shield как половина инструмента 18 мин 04 Мосты между sync и async: to_thread и экзекьюторы в одну сторону, долгоживущий цикл и run_coroutine_threadsafe в другую 18 мин
12
Python в проде
Python в проде — это логи, по которым можно искать, конфиг, падающий на старте, правильные контейнеры и разборы утечек и зависаний. 01 Логирование и конфиг: дерево логгеров по dot-именам, JSON-вывод и настройки, падающие на старте 19 мин 02 Контейнеризация Python: slim и multi-stage сборки с uv, слои под кеш и сигналы, доходящие до PID 1 18 мин 03 Воркеры и жизненный цикл: процессная математика gunicorn, preload и fork-безопасность, graceful shutdown 19 мин 04 Постмортемы инцидентов: утечка, зависание, лавина рестартов — и ремесло blameless-разбора 20 мин
Проекты по этому треку
Guided-проекты, которые закрепляют изученное здесь.
CI/CD-пайплайны
Безопасно катить на каждый push — пайплайны, кэш и тесты-гейты на мерж, на GitHub Actions.