Каталог/назад к курсам
Практический Python для разработчиков: большой задачник
PythonПродвинутый

Практический Python для разработчиков: большой задачник

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

7 модулей • 18 уроков147 заданий с проверкой
Код в браузере: PythonСвободный темпСертификат с проверкой

О курсе

Когда синтаксис языка уже привычен, сложности вызывают детали поведения стандартных инструментов. Потоковая обработка данных, управление системными ресурсами и фоновые корутины часто ведут себя иначе, чем ожидается при беглом чтении кода.

В этом задачнике вы будете писать решения руками и разбираться, как работают внутренние механизмы интерпретатора. Практика помогает предсказывать поведение программы при одновременном доступе к данным, сбоях и высокой нагрузке.

Основные темы

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

Вам предстоит решать предметные задачи разного масштаба. Например, вы построите очередь событий для спасательного батискафа с динамическим пересчётом приоритетов на heapq или свяжете разнородные классы ставок через методы сравнения с возвратом NotImplemented.

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

Чему научитесь

  • Выбирать подходящие структуры данных для очередей с приоритетами и скользящих окон
  • Строить генераторные цепочки с надёжным закрытием системных ресурсов при сбоях
  • Создавать контекстные менеджеры для изоляции транзакций и отката изменений
  • Настраивать согласованное сравнение пользовательских объектов без ошибок типов
  • Разделять ввод-вывод и ресурсоёмкие вычисления между потоками и процессами
  • Организовывать асинхронные очереди с контролем таймаутов и отменой задач
  • Находить медленные участки алгоритмов и сокращать потребление оперативной памяти

Для кого

  • Разработчикам, которые уверенно пишут базовый код на Python и хотят глубже понимать поведение рантайма
  • Инженерам, желающим закрепить на практике работу со стандартной библиотекой, многопоточностью и asyncio

Формат

  • 7 модулей и 18 уроков с текстовой теорией
  • 120 задач по программированию с автоматической проверкой решений на платформе Латорна
  • 27 вопросов на понимание ключевых механизмов и 234 встроенные подсказки
  • Самостоятельное обучение в своём темпе

Что нужно на старте

  • Уверенное владение базовым синтаксисом: функциями, циклами и обработкой исключений
  • Опыт работы со стандартными коллекциями: списками, словарями, множествами и кортежами
  • Понимание основ объектно-ориентированного программирования: создание классов и методов
#python

Автор курса

Алексей Малышкин

Разрабатываю образовательные материалы по программированию, машинному обучению и анализу данных. Темы: Python-разработка, аналитика, ML-инструменты (LangChain, vector databases, AI agents), компьютерное зрение. Стараюсь объяснять технические концепции понятно и структурировано. Ранее преподавал на Stepik и обучил более 2000 студентов. Мой профиль на Stepik - https://stepik.org/users/273781420/profile Мой телеграм для связи @alexey_latorn

Программа

01Специализированные структуры данных и потоковая обработка2 урока
1Коллекции стандартной библиотеки: deque, Counter, defaultdict и ChainMapпробный
2Упорядоченные структуры: двоичный поиск с bisect и очереди с приоритетами на heapq
02Итераторы, генераторы и модуль itertools3 урока
1Генераторные пайплайны и протокол итератора: lazy evaluation и управление ресурсами
2Двусторонняя передача данных в генераторах: yield как выражение и метод send()
3Комбинаторика и пакетная потоковая обработка: модуль itertools
03Функциональные идиомы и управление контекстом3 урока
1Продвинутые замыкания и параметризованные декораторы функций
2Декораторы на базе классов с сохранением состояния
3Протокол менеджеров контекста: __enter__, __exit__ и модуль contextlib
04Объектная модель Python и метапрограммирование3 урока
1Модель данных: rich comparisons, хеширование и безопасность коллекций
2Протокол дескрипторов: валидация полей и ленивые свойства
3Метапрограммирование классов: __init_subclass__ и метаклассы
05Параллелизм: потоки и процессы2 урока
1Границы GIL и пул исполнителей: ThreadPoolExecutor против ProcessPoolExecutor
2Межпроцессный обмен и защита разделяемого состояния: Queue и Lock
06Асинхронное программирование с asyncio3 урока
1Event Loop, корутины и конкурентный запуск: asyncio.gather и TaskGroup
2Асинхронная синхронизация и очереди: Lock, Semaphore и asyncio.Queue
3Управление отменой, таймауты и Graceful Shutdown сервиса
07Оптимизация производительности, память и профилирование2 урока
1Профилирование исполнения и инспекция байт-кода: cProfile и dis
2Диагностика памяти и оптимизация footprint: tracemalloc и __slots__
Дополнительные материалы и практика

Задачи

Все задачи курса