Python

От интерпретатора до прод-готового FastAPI приложения

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

  1. Установка Python и первый запуск — Поставить интерпретатор, понять что такое REPL и запустить первый скрипт
  2. Интерпретатор, байт-код и .pyc — Как CPython превращает исходник в выполняемый код и зачем нужна shebang-строка
  3. Виртуальные окружения: venv и изоляция зависимостей — Зачем не ставить пакеты в системный Python и как создать изолированное окружение для каждого проекта
  4. pip, requirements.txt и pyproject.toml — Как ставить пакеты, фиксировать зависимости и почему pyproject.toml вытесняет requirements
  5. REPL и отладчик: ipython, pdb, breakpoint — Как быстро экспериментировать с кодом и пошагово отлаживать программы
  6. Числовые типы: int, float, Decimal, complex — Целые без переполнения, плавающая точка с подвохами, Decimal для денег
  7. Строки и байты: str vs bytes, кодировки, f-strings — Чем отличаются текст и бинарные данные, как работает Unicode и форматирование строк
  8. Булевы значения, None и truthy/falsy — Что считается «истиной» в условиях, чем `is` отличается от `==` и зачем нужен None
  9. Переменные и изменчивость: ссылки, mutable vs immutable — Что хранит переменная, чем отличаются изменяемые объекты от неизменяемых и как избежать ловушек
  10. Type hints: typing, mypy, Optional, Union — Как декларативно описывать типы и проверять их статическим анализатором
  11. Условные конструкции: if, elif, else, тернарный и walrus — Ветвление логики через if/elif/else, краткие формы и оператор моржа :=
  12. Циклы: for, while, range, enumerate, zip, break/continue — Все варианты циклов в Python, утилиты для итерации и идиома for-else
  13. match-case: structural pattern matching — Не просто switch - сопоставление по структуре, типу, классу и литералам
  14. Comprehensions: list, dict, set и generator — Компактный синтаксис для создания коллекций из iterable
  15. Исключения: try/except/else/finally и кастомные exceptions — Идиоматичная обработка ошибок: иерархия, цепочки, custom exceptions, EAFP
  16. Контекстные менеджеры: with, contextlib, ExitStack — Декларативное управление ресурсами через with и создание собственных менеджеров
  17. Функции: def, return, аннотации, scope (LEGB) — Объявление функций, возврат значений, docstrings и правила области видимости
  18. args, kwargs, positional-only и keyword-only — Гибкие списки параметров: *args, **kwargs и разделители / и *
  19. Замыкания и lambda: nonlocal, partial, functools — Захват переменных вложенными функциями, синтаксис анонимных функций и утилиты functools
  20. Декораторы: @decorator, functools.wraps, типичные паттерны — Как функция модифицирует другую функцию: синтаксис, базовые примеры, wraps
  21. Продвинутые декораторы: параметризованные, class-based, classmethod — Декораторы с аргументами, класс-декораторы, property/classmethod/staticmethod
  22. Списки: list, методы, slice, sort vs sorted — Динамические массивы Python: операции, срезы, сортировка и подводные камни
  23. Кортежи и NamedTuple: иммутабельные структуры — tuple, namedtuple, typing.NamedTuple - когда лучше чем list или dataclass
  24. Словари: dict, методы, get, comprehension, упорядоченность — Ассоциативные массивы Python: операции, идиомы, performance, dict как замена elif
  25. Множества: set, frozenset, операции — Уникальные элементы с быстрым поиском: объединение, пересечение, разность
  26. collections: Counter, deque, defaultdict, ChainMap — Специализированные коллекции стандартной библиотеки
  27. Классы: class, __init__, self, методы — Основы ООП в Python - объявление класса, конструктор и методы экземпляра
  28. Атрибуты и методы: class vs instance, classmethod, staticmethod, property — Разница между атрибутами класса и инстанса, типы методов и контроль доступа
  29. Dunder-методы: __repr__, __eq__, __hash__, __len__, __iter__ — Magic-методы делают классы интегрированными с операторами и встроенными функциями
  30. Наследование, super(), MRO и множественное наследование — Подклассы, цепочка super(), алгоритм C3 для MRO, mixins и diamond inheritance
  31. dataclass и Enum: декларативные классы и перечисления — @dataclass для автогенерации методов, Enum для типобезопасных констант
  32. ABC и Protocol: абстрактные классы и duck typing с типами — abstractmethod для явного наследования, Protocol для structural subtyping
  33. Итераторы: протокол __iter__/__next__ и iter() — Как Python обходит коллекции - протокол итерации, разница iterable и iterator
  34. Генераторы: yield, generator expressions, lazy evaluation — Простой способ создавать итераторы через yield, бесконечные последовательности, pipelines
  35. asyncio: event loop, async/await, корутины — Основы асинхронного программирования в Python для IO-bound задач
  36. asyncio: gather, create_task, Queue, timeout, отмена — Продвинутые паттерны: параллельное выполнение, очереди, таймауты и обработка ошибок
  37. GIL и threading: когда потоки помогают — Global Interpreter Lock, threading модуль и почему asyncio часто лучше
  38. multiprocessing: настоящая параллельность через процессы — Обход GIL для CPU-bound задач через отдельные процессы и ProcessPoolExecutor
  39. Импорты и пакеты: import, __init__.py, sys.path — Как Python находит и загружает модули, абсолютные и относительные импорты
  40. Packaging: pyproject.toml, build, publish to PyPI — Как упаковать проект в wheel, опубликовать на PyPI и сделать CLI через entry points
  41. stdlib: os, pathlib, subprocess, shutil — Работа с файловой системой, путями, процессами и копированием файлов
  42. stdlib: datetime, zoneinfo, json, csv — Работа с датами и временем, сериализация в популярные форматы
  43. logging: уровни, handlers, formatters, root pitfalls — Стандартный механизм журналирования вместо print: настройка и типичные ловушки
  44. pytest: основы, assert, параметризация, маркеры — Тестирование на pytest - простой синтаксис, parametrize и organising тестов
  45. pytest fixtures: setup через dependency injection — Переиспользование test setup через @pytest.fixture, scope, conftest, parametrize
  46. Mocking: unittest.mock, patch, side_effect — Изоляция тестов от внешних зависимостей через Mock, MagicMock и patch
  47. Линтеры и типы: ruff, black, mypy, pre-commit — Автоматическое поддержание качества кода: форматирование, линтинг, type checking
  48. WSGI и ASGI: sync vs async серверы — Стандарты взаимодействия между Python-приложением и веб-сервером - WSGI и ASGI
  49. FastAPI: эндпоинты, параметры, body, OpenAPI — Создание REST API на FastAPI: path/query/body параметры, auto-документация
  50. Pydantic: BaseModel, валидаторы, Settings — Type-safe валидация данных - модели, кастомные валидаторы, settings из env
  51. SQLAlchemy ORM: модели, session, queries — Работа с реляционными БД через ORM - модели, отношения, запросы, identity map
  52. Alembic: миграции БД, autogenerate, окружения — Version control для схемы БД - создание, применение, откат миграций
  53. Аутентификация: JWT, OAuth2 password flow, Depends — Безопасный auth для REST API - JWT токены, password hashing, защита endpoints
  54. Docker и CI: Dockerfile для Python, multi-stage, GitHub Actions — Контейнеризация Python приложений и автоматизация деплоя через CI/CD
  55. Финальный проект: REST API на FastAPI + SQLAlchemy + JWT + Docker — Соберём всё что выучили в полноценный TODO REST API с тестами и контейнеризацией
  56. Брокеры сообщений: AMQP/RabbitMQ vs Kafka vs Pulsar — Зачем нужны message brokers и как выбрать между RabbitMQ, Kafka и Pulsar
  57. RabbitMQ с aio-pika: producer, consumer, ack, DLQ — Async работа с RabbitMQ - публикация, потребление, гарантии доставки, dead letter queue
  58. Kafka с aiokafka: topics, partitions, consumer groups, offsets — Async работа с Kafka - producer, consumer groups, offset management, exactly-once
  59. Consumer patterns: идемпотентность, retry, outbox, graceful shutdown — Production-ready паттерны для консумеров: идемпотентность, retry с backoff, outbox, task queues
  60. Рекурсия: базовый случай, стек, @lru_cache — Рекурсивные функции, sys.setrecursionlimit, мемоизация через lru_cache, когда итерация лучше