Python

От интерпретатора до FastAPI-приложения, готового к развёртыванию: SQLAlchemy, Alembic, JWT, Docker, CI

Уровень: Начальный · около 35 ч · после курса: Соберёшь FastAPI-приложение с SQLAlchemy, Alembic, JWT, тестами, Docker и CI

Чему научишься

  • Понимать как работает CPython, GIL и event loop
  • Писать идиоматичный Python: comprehensions, decorators, context managers
  • Применять dataclass, Protocol, ABC для проектирования типов
  • Использовать asyncio для IO-bound и multiprocessing для CPU-bound
  • Покрывать код тестами на pytest с fixtures и mocking
  • Поднимать REST API на FastAPI с Pydantic и SQLAlchemy
  • Упаковывать приложение в Docker и описывать CI pipeline

Уроки курса (60)

Модуль 1 · Старт и инструменты

Установить Python, освоить venv, pip, pyproject.toml и REPL

  1. Установка Python и первый запуск - Поставить интерпретатор, понять что такое REPL и запустить первый скрипт
  2. Интерпретатор, байт-код и .pyc - Как CPython превращает исходник в выполняемый код и зачем нужна shebang-строка
  3. Виртуальные окружения: venv и изоляция зависимостей - Зачем не ставить пакеты в системный Python и как создать изолированное окружение для каждого проекта
  4. pip, requirements.txt и pyproject.toml - Как ставить пакеты, фиксировать зависимости и почему pyproject.toml вытесняет requirements
  5. REPL и отладчик: ipython, pdb, breakpoint - Как быстро экспериментировать с кодом и пошагово отлаживать программы

Модуль 2 · Типы и значения

Числа без переполнения, строки и байты, truthy/falsy, mutable vs immutable, type hints

  1. Числовые типы: int, float, Decimal, complex - Целые без переполнения, плавающая точка с подвохами, Decimal для денег
  2. Строки и байты: str vs bytes, кодировки, f-strings - Чем отличаются текст и бинарные данные, как работает Unicode и форматирование строк
  3. Булевы значения, None и truthy/falsy - Что считается «истиной» в условиях, чем `is` отличается от `==` и зачем нужен None
  4. Переменные и изменчивость: ссылки, mutable vs immutable - Что хранит переменная, чем отличаются изменяемые объекты от неизменяемых и как избежать ловушек
  5. Type hints: typing, mypy, Optional, Union - Как декларативно описывать типы и проверять их статическим анализатором

Модуль 3 · Поток выполнения

Условия, циклы, pattern matching, comprehensions и исключения

  1. Условные конструкции: if, elif, else, тернарный и walrus - Ветвление логики через if/elif/else, краткие формы и оператор моржа :=
  2. Циклы: for, while, range, enumerate, zip, break/continue - Все варианты циклов в Python, утилиты для итерации и идиома for-else
  3. match-case: structural pattern matching - Не просто switch - сопоставление по структуре, типу, классу и литералам
  4. Comprehensions: list, dict, set и generator - Компактный синтаксис для создания коллекций из iterable
  5. Исключения: try/except/else/finally и кастомные exceptions - Идиоматичная обработка ошибок: иерархия, цепочки, custom exceptions, EAFP

Модуль 4 · Функции, контекст и модули

Функции и декораторы, затем with и структура проекта: модули, пакеты, __init__.py

  1. Функции: def, return, аннотации, scope (LEGB) - Объявление функций, возврат значений, docstrings и правила области видимости
  2. args, kwargs, positional-only и keyword-only - Гибкие списки параметров: *args, **kwargs и разделители / и *
  3. Замыкания и lambda: nonlocal, partial, functools - Захват переменных вложенными функциями, синтаксис анонимных функций и утилиты functools
  4. Рекурсия: базовый случай, стек, @lru_cache - Рекурсивные функции, sys.setrecursionlimit, мемоизация через lru_cache, когда итерация лучше
  5. Декораторы: @decorator, functools.wraps, типичные паттерны - Как функция модифицирует другую функцию: синтаксис, базовые примеры, wraps
  6. Продвинутые декораторы: параметризованные, class-based, classmethod - Декораторы с аргументами, класс-декораторы, property/classmethod/staticmethod
  7. Контекстные менеджеры: with, contextlib, ExitStack - Декларативное управление ресурсами через with и создание собственных менеджеров
  8. Импорты и пакеты: import, __init__.py, sys.path - Как Python находит и загружает модули, абсолютные и относительные импорты

Модуль 5 · Коллекции

list, tuple, NamedTuple, dict, set и специализированные коллекции из collections

  1. Списки: list, методы, slice, sort vs sorted - Динамические массивы Python: операции, срезы, сортировка и подводные камни
  2. Кортежи и NamedTuple: иммутабельные структуры - tuple, namedtuple, typing.NamedTuple - когда лучше чем list или dataclass
  3. Словари: dict, методы, get, comprehension, упорядоченность - Ассоциативные массивы Python: операции, идиомы, performance, dict как замена elif
  4. Множества: set, frozenset, операции - Уникальные элементы с быстрым поиском: объединение, пересечение, разность
  5. collections: Counter, deque, defaultdict, ChainMap - Специализированные коллекции стандартной библиотеки

Модуль 6 · ООП

Классы, dunder-методы, наследование и MRO, dataclass и Enum, ABC и Protocol

  1. Классы: class, __init__, self, методы - Основы ООП в Python - объявление класса, конструктор и методы экземпляра
  2. Атрибуты и методы: class vs instance, classmethod, staticmethod, property - Разница между атрибутами класса и инстанса, типы методов и контроль доступа
  3. Dunder-методы: __repr__, __eq__, __hash__, __len__, __iter__ - Magic-методы делают классы интегрированными с операторами и встроенными функциями
  4. Наследование, super(), MRO и множественное наследование - Подклассы, цепочка super(), алгоритм C3 для MRO, mixins и diamond inheritance
  5. dataclass и Enum: декларативные классы и перечисления - @dataclass для автогенерации методов, Enum для типобезопасных констант
  6. ABC и Protocol: абстрактные классы и duck typing с типами - abstractmethod для явного наследования, Protocol для structural subtyping

Модуль 7 · Итерация и асинхронность

Iterators, generators, asyncio (event loop, gather, Queue), GIL и threading, multiprocessing

  1. Итераторы: протокол __iter__/__next__ и iter() - Как Python обходит коллекции - протокол итерации, разница iterable и iterator
  2. Генераторы: yield, generator expressions, lazy evaluation - Простой способ создавать итераторы через yield, бесконечные последовательности, pipelines
  3. asyncio: event loop, async/await, корутины - Основы асинхронного программирования в Python для IO-bound задач
  4. asyncio: gather, create_task, Queue, timeout, отмена - Продвинутые паттерны: параллельное выполнение, очереди, таймауты и обработка ошибок
  5. GIL и threading: когда потоки помогают - Global Interpreter Lock, threading модуль и почему asyncio часто лучше
  6. multiprocessing: настоящая параллельность через процессы - Обход GIL для CPU-bound задач через отдельные процессы и ProcessPoolExecutor

Модуль 8 · Packaging и стандартная библиотека

pyproject.toml и build, pathlib/subprocess/shutil, datetime/json/csv, logging

  1. Packaging: pyproject.toml, build, publish to PyPI - Как упаковать проект в wheel, опубликовать на PyPI и сделать CLI через entry points
  2. stdlib: os, pathlib, subprocess, shutil - Работа с файловой системой, путями, процессами и копированием файлов
  3. stdlib: datetime, zoneinfo, json, csv - Работа с датами и временем, сериализация в популярные форматы
  4. logging: уровни, handlers, formatters, root pitfalls - Стандартный механизм журналирования вместо print: настройка и типичные ловушки

Модуль 9 · Тестирование и качество

pytest (basics, fixtures, mocking), линтеры (ruff), type checking (mypy), pre-commit hooks

  1. pytest: основы, assert, параметризация, маркеры - Тестирование на pytest - простой синтаксис, parametrize и organising тестов
  2. pytest fixtures: setup через dependency injection - Переиспользование test setup через @pytest.fixture, scope, conftest, parametrize
  3. Mocking: unittest.mock, patch, side_effect - Изоляция тестов от внешних зависимостей через Mock, MagicMock и patch
  4. Линтеры и типы: ruff, black, mypy, pre-commit - Автоматическое поддержание качества кода: форматирование, линтинг, type checking

Модуль 10 · Веб-бэкенд и развёртывание

WSGI/ASGI, FastAPI, Pydantic, SQLAlchemy, Alembic, JWT auth, Docker и CI, финальный проект. Эксплуатация - secrets, TLS, бэкапы, observability - в отдельных треках

  1. WSGI и ASGI: sync vs async серверы - Стандарты взаимодействия между Python-приложением и веб-сервером - WSGI и ASGI
  2. FastAPI: эндпоинты, параметры, body, OpenAPI - Создание REST API на FastAPI: path/query/body параметры, auto-документация
  3. Pydantic: BaseModel, валидаторы, Settings - Type-safe валидация данных - модели, кастомные валидаторы, settings из env
  4. SQLAlchemy ORM: модели, session, queries - Работа с реляционными БД через ORM - модели, отношения, запросы, identity map
  5. Alembic: миграции БД, autogenerate, окружения - Version control для схемы БД - создание, применение, откат миграций
  6. Аутентификация: JWT, login endpoint, Depends - Безопасный auth для REST API - JWT токены, password hashing, защита endpoints
  7. Docker и CI: Dockerfile для Python, multi-stage, GitHub Actions - Контейнеризация Python приложений и автоматизация деплоя через CI/CD
  8. Финальный проект: REST API на FastAPI + SQLAlchemy + JWT + Docker - Соберём всё что выучили в полноценный TODO REST API с тестами и контейнеризацией

Дополнительный модуль · Асинхронные сообщения

Не входит в основной backend-трек и идёт после финального проекта: RabbitMQ и Kafka, aio-pika и aiokafka, идемпотентность, retry, outbox, DLQ

  1. Брокеры сообщений: AMQP/RabbitMQ vs Kafka vs Pulsar - Зачем нужны message brokers и как выбрать между RabbitMQ, Kafka и Pulsar
  2. RabbitMQ с aio-pika: producer, consumer, ack, DLQ - Async работа с RabbitMQ - публикация, потребление, гарантии доставки, dead letter queue
  3. Kafka с aiokafka: topics, partitions, consumer groups, offsets - Async работа с Kafka: producer, consumer groups, управление offset и границы гарантий доставки
  4. Consumer patterns: идемпотентность, retry, outbox, graceful shutdown - Паттерны надёжных консумеров: идемпотентность, retry с backoff, outbox, очереди задач