Перейти к основному контенту
Tech Path Finder
КурсыИнтервьюКод-ревьюБлог
Tech Path Finder

Персонализированный путеводитель в IT. Квизы, мок-интервью, код ревью и аналитика прогресса.

@potapov_me

Платформа

  • Курсы
  • Прогресс
  • Мок-интервью
  • Код ревью
  • Живое ревью с ИИ
  • Тренажёр переговоров
  • Закладки

Контент

  • Блог
  • Главная
  • Обратная связь

Компания

  • О проекте
  • Тарифы
  • Условия использования
  • Конфиденциальность
  • Согласие на обработку данных
  • Cookie
  • Реквизиты

Аккаунт

  • Войти
  • Зарегистрироваться
  • Профиль

© 2026 Tech Path Finder. Все права защищены.

·ИП Потапов К.С.·Политика конфиденциальности·
Сделано с ❤️ в России
  1. Python
Python экосистема·24 темы·485 вопросов·уровень Junior, Middle, Senior

Python

Самодостаточный учебный путь по Python: от установки, первого запуска и основ синтаксиса до ООП, асинхронности, типизации, управления памятью и безопасности.

Начать курсРепозиторий лабораторийv0.6.2

Python — практический маршрут от начального до старшего уровня

Цель: научиться проектировать, реализовывать, проверять и защищать Python-решения — от небольшого скрипта до системы в эксплуатации.

Курс состоит из 24 последовательных тем. Нулевой вход — установка Python, терминал, первый запуск и чтение traceback — включён в первую тему. Основы вынесены вперёд, тестирование появляется до сложных абстракций, а материал старшего уровня собран в разделах про эксплуатацию и устройство среды выполнения. Тестирование разбито на три темы: базовый набор pytest в основах, изоляция зависимостей и стратегия набора — в модуле эксплуатации, когда есть что изолировать и что измерять. Пройти маршрут только запоминанием ответов недостаточно: каждый модуль заканчивается проверяемым результатом работы.


Как устроен урок

Каждая тема читается в одном порядке: карта урока, объяснение от базовых понятий к ограничениям, пошаговая практика, упражнения и — у большинства тем — исполняемая лаборатория. В карте есть четыре ориентира:

  • До урока — обязательные начальные требования;
  • Основа — минимум, необходимый для следующей темы;
  • Работа в эксплуатации — ошибки, тесты, типизация и эксплуатационные компромиссы;
  • Углубление — внутреннее устройство и отдельное подтверждение навыков старшего уровня.

Основа следующей темы не требует досрочно проходить углубление. К разделам старшего уровня стоит вернуться после знакомства с измерениями, профилированием или системным проектированием. Практика внутри урока идёт от минимального запуска к рабочему сценарию и объяснению внутреннего механизма.

Кодовые блоки имеют один из трёх смыслов:

  • исполняемый пример можно скопировать в отдельный файл и запустить;
  • фрагмент показывает только обсуждаемый участок и прямо называет пропущенные зависимости;
  • намеренно ошибочный пример помечен словом «Проблема» и сопровождается ожидаемым типом ошибки.

После упражнений сначала сформулируйте ожидаемое поведение, затем проверьте его через assert, тест или указанный вывод. Раздел «Самопроверка» задаёт наблюдаемые критерии, а лаборатория содержит полный автоматический набор тестов.

Профили выпускника каждого уровня

Код навыка — это не тема и не балл за тест, а наблюдаемое умение. Уровень закрыт, когда студент предъявил перечисленный результат работы и может объяснить решения по рубрике.

Начальный уровень · J1–J7

КодПроверяемое умение
J1Воспроизводимо установить проект, запустить CLI и тесты
J2Выбрать типы данных и диагностировать изменяемость/общие ссылки
J3Реализовать функцию и публичный контракт по спецификации
J4Обработать ожидаемые ошибки, не скрывая системные
J5Читать и писать текст, JSON, CSV и TOML через pathlib
J6Написать pytest-тесты, параметризацию и проверку старой ошибки
J7Применить журналирование, строки документации, форматирование и базовую типизацию

Итоговая работа уровня: CLI-нормализатор данных с тестами, структурированными ошибками, журналированием и документацией.

Средний уровень · M1–M8

КодПроверяемое умение
M1Спроектировать модуль и устойчивый публичный API
M2Выбрать функцию, dataclass, композицию или наследование
M3Построить итератор, генератор, контекстный менеджер или декоратор
M4Проверить типизированную границу через Protocol, обобщения и сужение типов
M5Реализовать и протестировать конкурентный I/O-код
M6Изолировать зависимость через тестовые двойники
M7Найти и закрыть границу инъекции/десериализации
M8Профилировать до оптимизации и доказать результат измерением

Итоговая работа уровня: типизированный сервис обработки задач с асинхронным вводом-выводом, тестовыми двойниками, границей безопасности и измеряемой наблюдаемостью.

Старший уровень · S1–S9

КодПроверяемое умение
S1Объяснить дескрипторы, MRO и поиск атрибутов исполняемой трассировкой
S2Отделить гарантию языка от детали CPython или конкретной версии
S3Диагностировать удержание памяти, циклы и влияние распределителя памяти
S4Спроектировать отмену, обратное давление и структурированную конкурентность
S5Выбрать асинхронность, потоки, процессы или интерпретаторы по характеру нагрузки
S6Обосновать метакласс или заменить его простым механизмом
S7Провести разбор производительности без показательных измерений
S8Провести разбор безопасности и архитектуры со сценариями злоупотребления
S9Защитить решение, альтернативы и остаточные риски

Итоговая работа уровня: аудит и развитие конвейера событий с пробами среды выполнения, внесением сбоев, моделью угроз и протоколом выбора на основе измерений.

Модуль 1. Основы

Цель модуля — собрать воспроизводимое окружение и научиться писать небольшие программы с явными контрактами и тестами.

№ТемаПрактическое доказательство
1Базовые практики Pythonкаркас пакета, небольшой файловый ETL и журналирование
2Базовые типы данныхлаборатория склада, тесты общих ссылок и заметка о памяти
3Управляющие конструкцииконечный автомат или синтаксический анализатор с таблицей случаев
4Функции и аргументыдвижок правил заказа и защита API-контракта
5Строки и форматированиенормализатор границы Unicode и текста с тестами
6Исключениядоменная политика ошибок и регрессионные тесты
7Тестирование: pytest и фикстурынабор pytest-тестов для основного контракта

Модуль 2. Инженерная основа

Цель модуля — строить расширяемый код, управлять ресурсами и проверять контракты на уровне выполнения и статической типизации.

№ТемаПрактическое доказательство
8Итераторы и генераторыпотоковая обработка с ограниченной памятью
9ООПпереработка «функция ↔ объект» и трассировка модели данных
10Классы данныхтипизированная модель и сравнение альтернатив
11Замыкания и декораторыдекоратор с сохранением метаданных и тестами отказа
12Контекстные менеджерыжизненный цикл ресурса с внесением сбоев
13Стандартная библиотекарешение средствами стандартной библиотеки и разбор альтернатив
14Система типовположительные и отрицательные сценарии проверки типов
15Паттерны проектированияGoF-вариант и более простая переработка средствами Python

Модуль 3. Работа в эксплуатации

Цель модуля — принимать измеримые инженерные решения для конкурентности, безопасности и производительности.

№ТемаПрактическое доказательство
16Тестовые двойникидоказанное число обращений к внешней системе без единого сетевого вызова
17Стратегия тестового набораветвевое покрытие критичного модуля и разбор выжившего мутанта
18Асинхронный Pythonустойчивый пакетный клиент и доказательство отмены
19Безопасность в Pythonмодель угроз, сценарии злоупотребления и регрессионный тест уязвимости
20Профилирование и оптимизациявоспроизводимый отчёт профилирования до оптимизации
21Производительность Pythonрешение на основе измерений без обещанного ускорения

Модуль 4. Устройство среды выполнения

Цель модуля — связать поведение программы с моделью объектов, средой CPython и механизмами метапрограммирования, не выдавая детали реализации за контракт языка.

№ТемаПодтверждение навыков старшего уровня
22Управление памятьюопыт с tracemalloc/GC и явной границей версии
23Продвинутый Pythonпроба атрибутного протокола, AST и процессов с технической запиской
24Метаклассы и дескрипторыреализация метакласса и упрощение через декоратор или __init_subclass__

Повторный вход в материал старшего уровня

  • После профилирования и управления памятью вернитесь к идентичности, хэшированию и представлению объектов из темы базовых типов.
  • После асинхронности расширьте ранний набор pytest-тестов проверками отмены, срока ожидания и очистки.
  • После декораторов и паттернов вернитесь к Protocol, ParamSpec и отрицательным примерам статической проверки.
  • После метаклассов сравните паттерны на метаклассах с декоратором и __init_subclass__.
  • После модуля эксплуатации соберите модель угроз и протокол выбора по характеру нагрузки для итоговой работы старшего уровня.

Исполняемая практика

Двадцать две тематические лаборатории и три итоговые работы уровня опубликованы в отдельном GitLab-проекте.

Материалы курса закреплены за неизменяемым выпуском v0.6.2, чтобы условие и проверки не менялись во время выполнения работы.

В выпуск входят:

  • нормализация складской выгрузки;
  • движок правил заказа;
  • устойчивый конкурентный пакетный клиент;
  • надёжная граница Unicode;
  • граница ожидаемых и системных ошибок;
  • проверка повторов через внесение сбоев;
  • типизированный реестр обработчиков;
  • поиск удержания подписчиков;
  • воспроизводимая настройка и CLI;
  • ленивый поток JSONL с ограниченной памятью;
  • транзакционный жизненный цикл без потери ошибок;
  • безопасное и атомарное извлечение ZIP;
  • защищаемые измерения производительности;
  • табличный конечный автомат событий;
  • кошелёк с дескриптором и композицией политики;
  • неизменяемая модель развёртывания;
  • наблюдающий декоратор без изменения семантики;
  • атомарная публикация JSONL-снимка;
  • маршрутизатор стратегий без лишней церемонии;
  • пакетный поиск с точкой окупаемости индекса;
  • AST-аудит границы процесса без исполнения кода;
  • сравнение явного реестра, __init_subclass__ и метакласса;
  • JSONL → JSON CLI для выхода с начального уровня;
  • типизированный асинхронный сервис для выхода со среднего уровня;
  • ограниченный конвейер событий с инженерными доказательствами для выхода на старший уровень.

Эталонные решения проходят 326 открытых проверок учебного контракта на CPython 3.12, 3.13 и 3.14. Открытые тесты — минимальный контракт, а не полная спецификация.

Статистика маршрута

  • Версия маршрута: 4.0
  • 24 темы в четырёх последовательных модулях
  • 485 вопросов с объяснениями
  • 150 статических упражнений
  • 22 тематические лаборатории + 3 итоговые работы уровня с 326 открытыми проверками
  • Исполняемая база: CPython 3.12–3.14; версии 3.8–3.11 рассматриваются как устаревшие и используются только в контексте миграции

Не пытайтесь закрыть весь маршрут одним проходом. Сначала подтвердите основу, примените её в задаче, приближенной к эксплуатации, а затем возвращайтесь к углублению с измерениями и вопросом: «какой контракт я действительно могу гарантировать?»

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

    Базовые практики Python

    Установка Python, терминал, первый запуск, traceback, PEP 8, uv и venv, модули, файлы и документация

    35 вопросов10.0(1)
  2. 2

    Базовые типы данных

    Встроенные типы Python: list, dict, set, tuple, str, int, float, bool, None; mutable/immutable; операции и методы

    37 вопросов10.0(1)
  3. 3

    Управляющие конструкции

    if/elif/else, for, while, break, continue, else в циклах, match/case (Python 3.10+)

    9 вопросов6.0(1)
  4. 4

    Функции и аргументы

    Определение функций, *args, **kwargs, значения по умолчанию, walrus-оператор

    35 вопросов7.0(1)
  5. 5

    Строки и форматирование

    Строки, f-строки, методы строк, работа с текстом

    10 вопросов9.0(1)
  6. 6

    Исключения

    Иерархия исключений, try/except/finally, пользовательские исключения

    25 вопросов8.0(1)
  7. 7

    Тестирование: pytest и фикстуры

    pytest, проверка ошибок и границ, параметризация, фикстуры, маркеры, организация набора

    7 вопросов8.0(1)
  8. 8

    Итераторы и генераторы

    Итерируемые объекты, range, enumerate, zip, генераторные выражения, yield

    30 вопросов7.0(1)
  9. 9

    ООП

    Классы, методы, наследование, @property, @classmethod, @staticmethod, __str__, __repr__, __new__, __init__

    35 вопросов6.0(1)
  10. 10

    Dataclasses

    Декоратор @dataclass, поля, frozen, order

    35 вопросов7.0(1)
  11. 11

    Замыкания и декораторы

    Замыкания, декораторы функций, lambda

    10 вопросов8.0(1)
  12. 12

    Контекстные менеджеры

    Протокол with, __enter__, __exit__, contextlib

    10 вопросов7.0(1)
  13. 13

    Стандартная библиотека

    functools (lru_cache, partial), itertools, copy (copy/deepcopy)

    10 вопросов
  14. 14

    Система типов

    Аннотации типов, TypeVar, Protocol, ABC, Annotated, type narrowing, PEP 695

    10 вопросов
  15. 15

    Паттерны проектирования

    Singleton, Factory, Strategy, Observer, Decorator, Adapter, Facade, Builder в контексте Python

    10 вопросов
  16. 16

    Тестовые двойники: изоляция зависимостей

    Stub, mock, fake и spy; unittest.mock, правило «где патчить», autospec, AsyncMock

    6 вопросов
  17. 17

    Стратегия тестового набора

    Уровни тестов, ветвевое покрытие, мутационное тестирование, flaky-тесты, CI-gate

    6 вопросов
  18. 18

    Асинхронный Python

    async/await, async генераторы, asyncio интеграция

    30 вопросов
  19. 19

    Безопасность в Python

    OWASP Top 10:2025, инъекции, десериализация, валидация, секреты, HTTPS, CVE

    10 вопросов
  20. 20

    Профилирование и оптимизация

    cProfile, tracemalloc, dis, байткод CPython

    35 вопросов
  21. 21

    Производительность Python

    CPU/I/O-bound, GIL, кэширование, алгоритмы, C-расширения, async vs threading

    35 вопросов
  22. 22

    Управление памятью

    GIL, подсчёт ссылок, циклический GC, weakref, __slots__

    35 вопросов
  23. 23

    Продвинутый Python

    Dunder методы глубже, метапрограммирование, AST, Cython, multiprocessing

    10 вопросов
  24. 24

    Метаклассы и дескрипторы

    Метаклассы, дескрипторы (__get__, __set__), __init_subclass__

    10 вопросов
  25. Зачёт

    Доступен после всех тем (0 из 24)

  26. Экзамен

    Доступен после зачёта

23 / 23

Python

Основы Python

Высокоуровневый язык программирования общего назначения с динамической типизацией и автоматическим управлением памятью. Акцент на читаемость кода и простоту синтаксиса (PEP 8). Интерпретируемый, с множеством реализаций (CPython, PyPy, Jython).

Пример

print('Hello, world!') — простейшая программа на Python, демонстрирующая динамическую типизацию и простой синтаксис.

Связанные термины

CPython

Основы Python

Официальная и наиболее распространённая реализация Python, написанная на C. Является эталонной реализацией, используемой в подавляющем большинстве случаев. Управляет GIL (Global Interpreter Lock).

Пример

Когда вы запускаете `python script.py`, вы используете CPython. Он компилирует код в байткод и выполняет его в виртуальной машине.

Связанные термины

PEP 8

Основы Python

Официальный стиль-гайд для написания кода на Python. Определяет правила оформления: отступы (4 пробела), именование (`snake_case`), размещение пробелов, длина строк и т.д. Соблюдение PEP 8 повышает читаемость и согласованность кода.

Пример

Правильно: `def calculate_total(items):`; Неправильно: `def CalculateTotal(Items):` или `def calculate_total(items):` с табуляцией.

Связанные термины

int

Типы данных

Встроенный неизменяемый целочисленный тип. В Python 3 имеет неограниченную точность (в отличие от C). Поддерживает операции `+`, `-`, `*`, `//`, `%`, побитовые операции и т.д.

Пример

x = 42 y = -1000000000000 z = x + y # z == -999999999958

Связанные термины

str

Типы данных

Встроенный неизменяемый тип для представления текста (Unicode-строки). Поддерживает индексацию, срезы, методы `.lower()`, `.split()`, `.format()`, f-строки и конкатенацию.

Пример

name = "Alice" message = f"Hello, {name}!" # 'Hello, Alice!'

Связанные термины

list

Типы данных

Изменяемая упорядоченная коллекция элементов произвольных типов. Поддерживает индексацию, срезы, методы `.append()`, `.pop()`, `.sort()`, `.extend()` и операторы `+`, `*`.

Пример

items = [1, "hello", True] items.append(42) # items == [1, "hello", True, 42]

Связанные термины

tuple

Типы данных

Неизменяемая упорядоченная коллекция элементов. Часто используется для группировки данных, возвращаемых функциями, или как ключи в словарях. Создаётся с помощью запятых или скобок.

Пример

point = (10, 20) name, age = ("Bob", 30) # распаковка

Связанные термины

dict

Типы данных

Изменяемая неупорядоченная коллекция пар «ключ-значение». Ключи должны быть хешируемыми (обычно неизменяемые типы). Поддерживает доступ по ключу `d[key]`, методы `.get()`, `.items()`, `.update()`.

Пример

user = {"name": "Alice", "age": 30} print(user["name"]) # 'Alice'

Связанные термины

Функция

Функции

Блок кода, предназначенный для выполнения конкретной задачи и повторного использования. Объявляется через `def`, может принимать аргументы, возвращать значение через `return`. В Python — объект первого класса.

Пример

def greet(name): return f"Hello, {name}!" print(greet("World")) # 'Hello, World!'

Связанные термины

*args и **kwargs

Функции

Специальные параметры для передачи переменного числа позиционных (`*args`) и именованных (`**kwargs`) аргументов в функцию. Позволяют создавать гибкие API и обёртки.

Пример

def log(message, *args, **kwargs): print(f"[{kwargs.get('level', 'INFO')}] {message}", *args) log("Error", "code=404", level="ERROR")

Связанные термины

Lambda-функция

Функции

Анонимная функция, определяемая в одной строке с помощью ключевого слова `lambda`. Используется для кратких операций, часто в качестве аргументов для функций высшего порядка (`map`, `filter`, `sorted`).

Пример

squares = list(map(lambda x: x**2, [1, 2, 3])) # [1, 4, 9]

Связанные термины

Класс

Объектно-ориентированное программирование

Шаблон для создания объектов (экземпляров), определяющий их атрибуты и методы. Реализует принципы ООП: инкапсуляцию, наследование и полиморфизм. Объявляется через `class`.

Пример

class Dog: def __init__(self, name): self.name = name def bark(self): return "Woof!"

Связанные термины

self

Объектно-ориентированное программирование

Ссылка на текущий экземпляр класса, передаваемая как первый аргумент в методы. Аналог `this` в других языках. Не является зарезервированным словом, но по соглашению используется именно так.

Пример

def __init__(self, value): self.value = value # self ссылается на создаваемый экземпляр

Связанные термины

Замыкание

Декораторы и замыкания

Функция, которая «захватывает» переменные из внешней области видимости (замыкает их). Возникает, когда внутренняя функция ссылается на переменные внешней функции после её завершения.

Пример

def make_multiplier(n): def multiplier(x): return x * n # n захвачена из outer scope return multiplier double = make_multiplier(2)

Связанные термины

Декоратор

Декораторы и замыкания

Функция, принимающая другую функцию и возвращающая новую функцию (часто с добавленным поведением). Применяется с помощью `@decorator`. Реализуется через замыкания.

Пример

@timeit def slow_function(): time.sleep(1) # Декоратор timeit измеряет время выполнения

Связанные термины

Генератор

Итераторы и генераторы

Функция, использующая `yield` вместо `return`, чтобы возвращать итератор. При вызове не выполняет код сразу, а создаёт объект-генератор, который выдаёт значения по запросу (лениво). Экономит память.

Пример

def fibonacci(n): a, b = 0, 1 for _ in range(n): yield a a, b = b, a + b list(fibonacci(5)) # [0, 1, 1, 2, 3]

Связанные термины

Итератор

Итераторы и генераторы

Объект, реализующий протокол итерации: методы `__iter__()` и `__next__()`. Позволяет обходить коллекцию по одному элементу за раз. Все генераторы — итераторы, но не наоборот.

Пример

it = iter([1, 2, 3]) print(next(it)) # 1 print(next(it)) # 2

Связанные термины

async / await

Асинхронность

Ключевые слова для написания асинхронного кода. `async def` объявляет корутину, `await` приостанавливает выполнение до завершения асинхронной операции (например, I/O). Работает в рамках event loop (`asyncio`).

Пример

async def fetch_data(url): async with aiohttp.ClientSession() as session: async with session.get(url) as resp: return await resp.text()

Связанные термины

Исключение

Исключения

Объект, представляющий ошибку или необычную ситуацию во время выполнения программы. Вызывается через `raise`, перехватывается через `try/except/finally`. Позволяет отделить нормальный поток от обработки ошибок.

Пример

try: result = 10 / 0 except ZeroDivisionError as e: print(f"Ошибка: {e}")

Связанные термины

Менеджер контекста

Менеджеры контекста

Объект, реализующий методы `__enter__()` и `__exit__()`, позволяющий управлять ресурсами (файлы, соединения) с помощью конструкции `with`. Гарантирует освобождение ресурсов даже при исключениях.

Пример

with open("file.txt") as f: data = f.read() # Файл закроется автоматически

Связанные термины

@dataclass

Dataclasses

Декоратор из модуля `dataclasses`, автоматически генерирующий методы `__init__`, `__repr__`, `__eq__` и другие для классов, предназначенных для хранения данных. Упрощает создание DTO и записей.

Пример

from dataclasses import dataclass @dataclass class Point: x: int y: int p = Point(1, 2) # p.x == 1, p.y == 2

Связанные термины

Модуль

Модули и пакеты

Файл с расширением `.py`, содержащий Python-код (функции, классы, переменные). Импортируется с помощью `import`. Корневой модуль — это файл, запущенный напрямую (`__name__ == '__main__'`).

Пример

# file: math_utils.py def add(a, b): return a + b # В другом файле: import math_utils print(math_utils.add(2, 3))

Связанные термины

Пакет

Модули и пакеты

Каталог, содержащий файл `__init__.py` (может быть пустым), который позволяет организовать модули в иерархию. Импортируется как `import package.module` или `from package import module`.

Пример

project/ ├── __init__.py ├── core/ │ ├── __init__.py │ └── utils.py from project.core.utils import helper

Связанные термины

Частые вопросы о курсе «Python»

Состав курса, уровни, практика и способы проверки знаний.

Что входит в курс «Python»?

Курс включает 24 темы и 485 вопросов с разбором ответа, а также 22 тематические лабораторные работы. Начать можно с первой темы курса.

Для какого уровня рассчитан курс «Python»?

Маршрут охватывает уровни Junior, Middle, Senior. Темы расположены от основы к более сложным инженерным задачам, поэтому можно начать с подходящего места и не пропускать важные зависимости.

Есть ли в курсе практические и лабораторные задания?

На вкладке «Практика» доступно 22 задания и 3 итоговые работы для подтверждения уровня. Решение выполняется в своём Git-репозитории и отправляется ссылкой на конкретный коммит. Открыть практику курса.

Как проверить, что материал усвоен?

После прохождения тем доступен зачёт по курсу «Python» — 20 случайных вопросов с порогом 80%. После зачёта открывается экзамен с развёрнутыми ответами и автоматической оценкой, приближённый к техническому собеседованию.

Курс «Python» бесплатный?

Да, курс полностью бесплатный: все 24 темы доступны без оплаты.