Получить доступ

Индивидуальный план развития: Python

Выберите текущий и целевой грейд — останутся темы, которые нужно освоить, с проверяемыми критериями, практическими заданиями и оценкой трудоёмкости. План можно скопировать в документ компании, скачать таблицей или распечатать.

1 этап Основы языка

Основы языка Основа

Junior
  • Объясняет изменяемые и неизменяемые типы и ловушку изменяемого аргумента по умолчанию
  • Выбирает между списком, кортежем, словарём и множеством по операциям
  • Обрабатывает исключения и пишет свои классы исключений

Практика. Решить 20 задач «что выведет код» на изменяемость, копирование и области видимости.

Middle
  • Объясняет устройство словаря и почему ключ должен быть хешируемым

Практика. Реализовать LRU-кэш на dict и сравнить с functools.lru_cache.

2 этап Функции, декораторы и замыкания

Функции, декораторы и замыкания Основа

Junior
  • Использует позиционные, именованные, *args и **kwargs
  • Пишет декоратор и объясняет замыкание

Практика. Написать декоратор замера времени и декоратор повторов.

Middle
  • Пишет декоратор с параметрами и functools.wraps
  • Использует functools — lru_cache, partial, singledispatch

Практика. Написать декоратор повторов с параметрами (число попыток, исключения, пауза), работающий и для async-функций.

3 этап Итераторы и генераторы

Итераторы и генераторы Основа

Junior
  • Пишет генераторы и объясняет экономию памяти по сравнению со списком
  • Использует list и dict comprehension и генераторные выражения

Практика. Обработать файл на гигабайт генератором построчно с фильтрацией и агрегацией.

Middle
  • Реализует протокол итератора и использует itertools
  • Объясняет send и yield from

Практика. Построить конвейер обработки логов из генераторов с itertools.

4 этап ООП и модель данных

ООП и модель данных Основа

Junior
  • Пишет классы со свойствами, наследованием и магическими методами
  • Использует dataclass для моделей данных

Практика. Сделать класс денежной суммы с операциями сравнения и сложения через магические методы.

Middle
  • Объясняет MRO и super при множественном наследовании
  • Объясняет дескрипторы, __slots__ и метаклассы на уровне назначения
  • Выбирает между dataclass, NamedTuple и Pydantic

Практика. Реализовать валидируемое поле дескриптором и сравнить с property и Pydantic.

5 этап Конкурентность и asyncio

Конкурентность и asyncio Основа

Junior
  • Объясняет GIL и разницу threading, multiprocessing и asyncio

Практика. Сравнить время загрузки 50 страниц последовательно, в потоках и в asyncio.

Middle
  • Пишет асинхронный код с TaskGroup, таймаутами и отменой
  • Выносит блокирующие вызовы из event loop
  • Защищает общее состояние в потоках, несмотря на GIL

Практика. Сделать асинхронный сборщик данных из нескольких API с ограничением параллельности, таймаутами и отменой.

Senior
  • Выбирает модель конкурентности под нагрузку сервиса и объясняет влияние free-threaded Python

Практика. Найти и устранить блокировку event loop в асинхронном сервисе под нагрузкой по профилю.

6 этап Память и устройство CPython

Память и устройство CPython Основа

Middle
  • Объясняет подсчёт ссылок и сборку циклических ссылок
  • Профилирует код (cProfile, py-spy) и ускоряет узкие места

Практика. Профилировать медленный скрипт, найти узкое место и ускорить минимум в 3 раза без смены алгоритма на C.

7 этап Аннотации типов

Аннотации типов Основа

Junior
  • Аннотирует функции и классы и проверяет код mypy или pyright

Практика. Аннотировать учебный проект и добиться прохождения mypy в строгом режиме.

Middle
  • Использует TypeVar, Generic и Protocol для обобщённого кода

Практика. Описать интерфейс репозитория через Protocol и сделать две реализации с проверкой типов.

8 этап Окружение, инструменты и тесты

Окружение, инструменты и тесты Основа

Junior
  • Создаёт виртуальное окружение и фиксирует зависимости
  • Пишет тесты на pytest с фикстурами и параметризацией

Практика. Покрыть учебный проект тестами pytest с фикстурами и отчётом покрытия.

Middle
  • Настраивает проект на uv или poetry с ruff и проверкой типов в CI
  • Подменяет внешние зависимости в тестах и тестирует асинхронный код

Практика. Настроить проект на uv с ruff, mypy и pytest в CI.

9 этап Веб-фреймворки

Веб-фреймворки Основа

Junior
  • Делает REST API на FastAPI или Django REST Framework с валидацией

Практика. Сделать API заказов на FastAPI с Pydantic-моделями, базой и тестами.

Middle
  • Использует внедрение зависимостей FastAPI и асинхронный доступ к базе
  • Работает с ORM (SQLAlchemy или Django ORM) без N+1 и с миграциями

Практика. Добавить асинхронный доступ к PostgreSQL через SQLAlchemy, миграции Alembic и устранить N+1 в списке заказов.

← Карта «Python»

Закрытая бета

План есть — пора на собеседование

sotto слышит вопрос интервьюера и показывает короткий ответ и план. Оставьте контакт — пришлём доступ и промокод.

  • Промокод на 2 часа — сверх пробных 30 минут
  • Программа для Windows — скачать сразу, войти — через Яндекс ID или VK ID
  • Прямая связь с разработчиком: что улучшить — сделаем