Полезный курс

Python для продвинутых: ООП, типизация и тестирование
Бесплатный курс после основ Python: превратите набор скриптов в приложение с понятной структурой, типами и тестами. ООП, mypy, pytest, работа с файлами и логирование. Итоговый проект — трекер задач; практические решения проверяются автоматически.
- 7 модулей
- 36 уроков
- 229 заданий с проверкой
- ≈ 40 часов обучения
Практика в браузере
Пишите и запускайте код прямо в уроке — редактор уже настроен. Ничего устанавливать не нужно.
Именной сертификат
После прохождения курса добавьте сертификат в резюме или портфолио. Работодатель сможет проверить его по ссылке.
О курсе
Бесплатный практический курс для следующего шага после основ Python. Вы уже умеете писать скрипты — здесь научитесь собирать из них приложение, которое удобно дополнять и проверять. Итоговая работа — трекер задач с файловым хранением, типами, логированием и тестами.
От работающего скрипта к приложению
Разнесёте код по модулям, научитесь выбирать между классом, dataclass и обычной функцией, отделите обработку данных от их хранения. Аннотации типов и mypy помогут находить несовместимые данные, а тесты pytest — замечать, что новая правка сломала старое поведение.
Самостоятельная практика с проверкой
В программе 36 уроков и 36 практических задач с кодом, который проверяется исполняемыми тестами. Отдельные вопросы закрепляют объяснения. Вы поработаете с композицией и наследованием, Generic и Protocol, fixtures, mock и monkeypatch, файлами JSON и CSV. Учиться можно в своём темпе.
Куда двигаться дальше
Дальше можно собрать свой backend на бесплатном курсе FastAPI или пойти в Python для профессионалов, если хотите глубже разобраться в возможностях языка.
Чему научитесь
- Организовывать Python-код в пакеты с понятным публичным API и корректными импортами.
- Проектировать объектные модели с композиционным и полиморфным поведением.
- Применять dataclass, Enum, собственные исключения и специальные методы.
- Описывать контракты через современную типизацию, Generic и Protocol и проверять их mypy.
- Писать содержательные тесты pytest с параметризацией, fixtures, stub, mock и monkeypatch.
- Отделять бизнес-логику от файлового хранения через Repository.
- Собирать небольшое типизированное приложение с конфигурацией, логированием и тестами.
Для кого
- Знаете функции, циклы и коллекции Python и ищете следующий шаг после начального курса.
- Пишете рабочие скрипты, но хотите разнести код по модулям и менять его без страха всё сломать.
- Понимаете синтаксис классов, но хотите разобраться, когда применять композицию, наследование и dataclass.
- Готовитесь к backend-разработке и хотите освоить pytest, аннотации типов и структуру приложения.
Формат
- 36 последовательных уроков в 7 модулях.
- 188 тестовых вопросов с автоматической проверкой.
- 36 практических задач с исполняемыми hidden-тестами.
- Итоговая работа — компактный типизированный трекер задач.
Что нужно на старте
- Уверенное владение базовым синтаксисом Python: условия, циклы, функции и коллекции.
- Базовая работа с модулями, исключениями и текстовыми файлами.
- Умение запускать Python-скрипты и устанавливать пакеты по инструкции.
Автор курса
Алексей Малышкин
Разрабатываю образовательные материалы по программированию, машинному обучению и анализу данных. Темы: Python-разработка, аналитика, ML-инструменты (LangChain, vector databases, AI agents), компьютерное зрение. Стараюсь объяснять технические концепции понятно и структурировано. Ранее преподавал на Stepik и обучил более 2000 студентов. Мой профиль на Stepik - https://stepik.org/users/273781420/profile Мой телеграм для связи @alexey_latorn
Программа
01Рабочее окружение и структура проекта5 уроков
02Полезные идиомы Python для проектного кода2 урока
03Объектно-ориентированное программирование12 уроков
04Система типов и статическая проверка5 уроков
05Тестирование с pytest7 уроков
06Файловый ввод-вывод, хранение данных и логирование4 урока
07Итоговый проект1 урок
Отзывы
3 отзываПосле начального Python хороший следующий шаг. Тесты уже пробую писать для своих задач.
Мне понравилось
Дополнительные материалы и практика
Задачи
- Comprehension, enumerate и zip в Python: отчёт по студентам
- Распаковка, args и kwargs в сигнатурах и вызовах — задача по Python
- Класс, init, атрибуты экземпляра и методы — задача по Python
- Инкапсуляция и property в Python: исправьте класс температуры
- Специальные методы: repr, str, eq, len — задача по Python
- Python: Каталог товаров: dataclass, NamedTuple и field(defaultfactory=...)
- Наследование, super() и переопределение методов — задача по Python
- Protocol в Python: задача на структурные интерфейсы
- Первые тесты на pytest: нормальные сценарии, граничные случаи и исключения — задача по Python
- Регрессионный тест Python: воспроизведите ошибку в calculatetax
- Python-пакет с моделями и Protocol: итоговая задача
- Python: Диагностика виртуального окружения
- Python: Валидатор pyproject.toml
- Абсолютные импорты Python: задача с пакетом warehouse
- Python: Публичный фасад пакета reports: init.py и all
- Python: Диагностика циклического импорта по traceback
- Python: Класс Event с альтернативным конструктором и валидацией
- Python: Иерархия исключений для банковского счёта
- Python: Маршрутизатор задач: Enum вместо строковых констант
- Python: Сборщик уведомлений: замени жёсткую зависимость на инъекцию
- Python: Система оценки контента: ABC с двумя конкретными подклассами
- Python: Диспетчер отчётов: полиморфный вызов без isinstance
- Python: Рефакторинг процедурного трекера задач в классы
- Аннотации типов Python: исправьте класс OrderLine
- Python: Форматировщик записей лога с Literal, X | None и TypeAlias
- Python: Обобщённая функция firstandlast с TypeVar и bound
- Python: Классификатор строк диагностики по инструменту
- Python: Параметризованные тесты для валидатора имени пользователя
- Фикстуры pytest и scope: напишите тесты для очереди
- Python: Напиши тесты для функции сохранения отчёта с tmppath
- Python: Напиши тесты для PricingService с stub-репозиторием
- Python: Напиши тесты для генератора токенов с патчингом времени и случайности
- Python: Организатор артефактов сборки
- Чтение JSON и запись CSV в Python: задача на конвертер
- Python: Реализуй TaskRepository и напиши тест с stub-репозиторием
- Python: Настрой файловый логгер с Formatter и фильтрацией секретов
Уроки
- Распаковка, *args и **kwargs в сигнатурах и вызовах
- Класс, __init__, атрибуты экземпляра и методы
- Специальные методы: __repr__, __str__, __eq__, __len__
- Наследование, super() и переопределение методов
- Первые тесты на pytest: нормальные сценарии, граничные случаи и исключения
- Dataclass, NamedTuple или обычный класс в Python
- Type hints и mypy в Python: практическая типизация
- Fixtures в pytest: подготовка данных и scope
- Monkeypatch и mock в pytest: когда что применять
- classmethod, staticmethod и обычный метод в Python
Статьи
- Python после основ: тесты, объекты и управление ресурсами
- Выгрузка XLSX из Python: как сохранить пользовательский текст без формул
- Контракт репозитория в pytest: один набор тестов для памяти и SQLite
- Тесты видят исходники, а установленный пакет сломан: зачем нужен src layout
- Цепочка методов потеряла тип наследника: когда в Python нужен Self
- Файловая ошибка стала ошибкой приложения: сохраняем причину через raise from
