План развития · карта «Python»

Индивидуальный план развития: 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
  • Пишет обработку ошибок с try, except, else и finally и ловит конкретные исключения
  • Освобождает ресурсы через with и пишет свой контекстный менеджер

Практика. Написать контекстный менеджер для временной смены рабочего каталога — классом и через contextlib.

Middle
  • Строит иерархию своих исключений и сохраняет причину через raise from

Практика. Описать иерархию исключений для своего сервиса и заменить голые except Exception на конкретные.

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

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

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

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

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

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

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

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

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

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

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

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

6 этап Атрибуты, дескрипторы и создание объектов

Атрибуты, дескрипторы и создание объектов Основа

Middle
  • Объясняет порядок создания объекта и когда нужен __new__
  • Согласует __eq__ и __hash__ и понимает, почему изменяемый объект не стоит делать хешируемым
  • Объясняет поиск атрибута и то, как на дескрипторах построены property и методы

Практика. Написать дескриптор с проверкой типа для полей класса и сравнить его с property.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.

Разбор собеседования