Перейти к основному содержимому

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

Преподаватели 👨‍🎓​

Сергей Сабалевский

Сергей Сабалевский @sabal202

Head of Data Infrastructure and Analytics @ AI Talent Hub ITMO
Ведущий инженер нейронных сетей @ X5 Tech

ex. руководитель отдела исследования данных в Skillbox
ex. MLE в СберКорус
ex. DS в Газпромнефть-ЦР

Формат общения
  • Обращение: можно на «ты»
  • Вопросы: на месте возникновения вопроса или в Telegram-чат
  • Пожалуйста, не задавайте мета-вопросов

Пререквизиты 🪪​

В качестве пререквизитов советую обновить знания по основам Python. Советую:

Описание курса​

Этот курс не научит вас писать приложения на каком-то фреймворке, этот курс не про архитектурные решения, не про паттерны проектирования, не научит вас программировать с нуля. Это не очередной курс в онлайне, который рассказывает о синтаксисе, чтобы решать алгосы.

Этот курс про язык Python как инструмент, про его внутренности, особенности, к чему эти особенности приводят. Как и почему язык развивался и развивается. Про то, как теоретические концепции применяются к реализации на Python.

Для кого этот курс будет максимально полезен?​

  • Ты хотел прочитать Fluent Python, но не дошли руки
  • Ты хочешь писать эффективный код
  • Ты хочешь более глубоко понимать инструмент, которым пользуешься

Формат курса 🔲​

Все занятия проходят в формате онлайн-встреч через платформу Zoom, и каждое занятие записывается для последующего доступа. Занятий-практик в рамках курса не подразумеваются, хоть в рамках лекций и будет несколько модулей, в рамках которых будет запуск примеров для иллюстрации теории.

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

В рамках курса будут домашние задания, от которых будет зависеть оценка за курс.

Программа курса 🗂️​

1. Модель данных Python​

Введение про сам язык. Особенности языка, про что забывают рассказать на курсах. Модель данных и её следствия. Как работает исполнение кода. Сборщик мусора.

2. Виртуальные среды и пакетные менеджеры​

Модули и как работает импорт модулей. Скрипты CLI, какие способы запуска кода существуют. Виртуальные окружения, пакетный менеджер. Пакетные менеджеры (conda, mamba, PDM, poetry, uv (rye), pixi), сравнение, что выбрать.

3. Функциональное программирование и функции​

Концепции функционального программирования. Функция — полноправный объект, следствия из этого. Как программировать в стиле ФП на Python. Типы и аннотация типов. Области видимости, замыкания, декораторы.

4. Концепции многозадачности​

Параллельность, конкурентность, многопоточность, асинхронность. Процессы, потоки, concurrent.futures, сабинтерпретаторы. Примитивы синхронизации. Race condition, deadlock. GIL, noGIL, история развития многозадачности 3.12–3.14.

5. Асинхронное программирование​

Генераторы, сопрограммы, нативные корутины (история развития асинхронного кода на Python). asyncio. Event loop. Блокирующие и неблокирующие операции.

6. Углубленное ООП​

Концепции ООП. Магические методы, жизненный цикл объекта. Множественное наследование, про self, про super, про MRO; композиция, примеси. Дескрипторы атрибутов.

7. Оптимизация кода на Python​

Почему Python медленный: динамическая типизация, memory overhead, интерпретируемость. Профилирование: cProfile, Scalene, py-spy, Memray. Оптимизация чистого Python: структуры данных, __slots__, мемоизация, генераторы. Векторизация с NumPy. JIT-компиляция с Numba. Cython. Эволюция CPython 3.11–3.15. Современная экосистема: Polars, Pydantic v2, mypyc, PyPy.

8. Метапрограммирование​

Как на самом деле работает ООП в Python. Что на самом деле такое методы в классах. Дескрипторы атрибутов, динамические атрибуты, метаклассы, type.