Приветствие: почему этот курс другой
Это курс по Python для будущих Data Engineer’ов, которые уже умеют написать if x > 0: и прочитать JSON из файла, и теперь хотят понимать что происходит под капотом. Это не “Python за 30 дней”. Здесь мы разбираем язык на уровне CPython source, hash table internals, memory layout и cache lines — потому что без этого нельзя честно рассуждать о производительности pandas, Polars или PyArrow.
Если вы пришли искать “Python для абсолютных новичков” — это не тот курс. Если вы ищете “почему dict действительно работает за amortized O(1)” — добро пожаловать.
Что вы получите
- Объяснять почему
dictlookup amortized O(1) — на уровне hash function (SipHash), open addressing с perturbation(5*i + 1 + perturb) mod size, load factorUSABLE_FRACTION = 2/3 - Читать CPython source (
Objects/listobject.c,Objects/dictobject.c,Objects/longobject.c) и понимать формулу геометрической реаллокации(newsize >> 3) + (newsize < 9 ? 3 : 6) - Различать какие операции дёшевы из-за contiguous memory и cache locality, а какие дороги из-за random access и cache misses
- Писать Pythonic код: comprehensions, generator expressions,
*args/**kwargs, контекстные менеджеры, декораторы — не как “магию”, а как конкретные конструкции с понятной semantics - Соединять Python knowledge с pandas / Polars / PyArrow через общий нижний слой: PEP 393 строки, Arrow columnar layout, NumPy ndarray contiguous buffers
- Применять амортизационный анализ (CLRS гл. 17) к реальному Python:
list.append,dictresize, set membership
Что курс НЕ делает
- Не учит installing Python на вашей машине — code challenges работают на Pyodide прямо в браузере
- Не учит Jupyter notebook integration — code challenges это замена; вы пишете Python в браузерном editor’е и сразу видите результат
- Не показывает работающий asyncio / multiprocessing / sockets — Pyodide WASM их не поддерживает (см. урок 03); такие темы преподаются conceptual
- Не углубляется в pandas API — это отдельный пласт, в нашем курсе только conceptual слой (Module 10); глубокий курс по pandas — отдельная фаза разработки
Глубина, которая нужна Data Engineer’у
Когда вы пишете df.groupby("user_id").agg({"amount": "sum"}) в pandas, в основе — hash table. Понимать почему load factor влияет на скорость = понимать почему вы ловите memory pressure и slowdown при определённых cardinalities группировки. Когда вы пишете pl.scan_parquet(...).filter(...).collect() в Polars, под капотом — Arrow columnar buffers, contiguous memory, cache-line-friendly обход. Понимать почему колоночное чтение быстрее = понимать что делает CPU prefetcher.
Без знания CPython internals вы можете писать рабочий код, но не сможете его оптимизировать — и не сможете отличить “медленно потому что pandas” от “медленно потому что я создал миллион intermediate Python objects вместо vectorized операции”.
Откройте github.com/python/cpython/blob/3.13/Objects/listobject.c и Objects/dictobject.c сейчас в соседней вкладке. Не бойтесь C — комментарии полные, и мы будем переводить ключевые места по ходу. Все ссылки на CPython source в курсе — реальные, без академических упрощений.
Структура курса
Курс состоит из 14 модулей (M00–M13). Phase 65 покрывает M00–M03 — orientation плюс DSA-фундамент. Остальные модули будут авторизованы в последующих фазах разработки.
M00: Введение в курс <- вы здесь (free preview)
M01: Основы Python и DSA-уровень
M02: Структуры данных: внутреннее устройство
M03: Функции и модули
M04: ООП в Python
M05: Итераторы и генераторы
M06: Декораторы и контекстные менеджеры
M07: Type Hints (Python 3.13)
M08: Тестирование с pytest
M09: Файловый I/O и форматы данных
M10: Pandas, Polars, PyArrow (conceptual)
M11: Логирование и мониторинг
M12: Производительность и профилирование
M13: Packaging и окружение
M00 — бесплатный preview: вы сейчас читаете без оплаты. Модули M01–M13 требуют one-time payment 500 Telegram Stars (детали в уроке 04).
Cross-course context
ClickHouse: анатомия Part ClickHouse: колоночная OLAP СУБД System Design Data Engineer — карта DE-стекаPython — швейцарский нож Data Engineer’а; production-уровневые query engines заслуживают отдельного изучения. Cross-course → DataFusion 00/02 what-is-datafusion — Rust query engine с Arrow в основе; те же principles columnar processing, что мы будем разбирать в M02 (list internals) и M10 (pandas/Polars/PyArrow conceptual). Cross-course → ClickHouse 00/01 what-is-clickhouse — OLAP колоночная СУБД, в которой Python используется как клиент; знание Python-internals из этого курса напрямую пригодится в clickhouse-driver и async clients.
Ключевые выводы
- Этот курс — про «почему», а не «как написать одну строку»
- DSA / hardware level — не опция, а контракт: каждый разбор структуры данных доходит до memory layout, hash internals и cache implications
- Pyodide ограничивает то, что можно запустить в браузере (никаких сокетов, процессов, тредов), но не то, что можно понять — concept-уроки покрывают и WASM-несовместимые темы
Как создавался курс
Курс создан при участии Claude (Anthropic) как соавтора: ИИ помогал писать материалы, структурировать темы, генерировать примеры кода и диаграммы. Каждая глава проходила ручную сверку с первоисточниками — спецификациями, документацией, исходным кодом рассматриваемых систем — но гарантировать 100% точность невозможно.
Если вы заметили неточность, опечатку или хотите предложить улучшение — напишите в Telegram-группу курса. Это самый ценный вклад в курс, который вы можете сделать.
Углублённое изучение с Claude
Курс рассчитан на самостоятельное изучение, но любая теория быстрее ложится, если задавать вопросы. Рекомендую держать рядом браузерное расширение Claude (claude.com/download) — оно работает с контентом открытой страницы: выделяете кусок урока и спрашиваете напрямую.
Сценарии, которые особенно хорошо работают для углублённого погружения:
- «Объясни проще» / «дай ещё один пример» — когда формулировка из урока не дошла с первого раза.
- «Покажи, как это устроено на уровне кода / железа» — когда хочется спуститься на слой ниже того, что даёт урок.
- «Как это связано с [другая тема курса]» — когда нужно увязать концепцию с тем, что было раньше.
- «У меня в проекте стек X — как применить?» — когда хочется примерить материал на свой реальный кейс.
Это не замена курсу, а способ ускорить интеграцию материала в вашу картину мира. Если что-то из ответов Claude расходится с уроком — присылайте в Telegram-группу, курс будет уточнён.
Нашли ошибку?
Если заметили неточность, опечатку или хотите предложить улучшение:
Telegram-канал
Подписывайтесь, чтобы узнавать об обновлениях и новых курсах: