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

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

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

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

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

Head of Data Infrastructure and Analytics @ AI Talent Hub ITMO

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. История ускорения CPython 3.11+. numba, Cython и др. Профилирование: cProfile, profile, pyinstrument.

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

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