практикум · Python

Python: функции и идиомы

Напишешь декораторы, генераторы и функции с собственным состоянием. Потренируешь обработку и сортировку данных перед собеседованием.

Для старта: Уже пишешь функции на Python и работаешь со списками и словарями

  • Python
  • 5 модулей
  • 25 задач
  • 5 задач бесплатно

После регистрации откроется программа этого пути.

результаты практики

что освоишь на практике

Автор программы:
  • Принимать переменное число аргументов через *args и **kwargs, включая позиционные-только и keyword-only параметры
  • Строить замыкания с nonlocal — счётчики, фабрики скидок, генераторы номеров с зашитым состоянием
  • Писать декораторы: счётчик вызовов, кэш последнего результата, охранник на пустой ввод, фабрику repeat_calls
подробнее о пути и навыках

что получится

25 задач по темам, которые чаще всего спрашивают на собеседовании по Python: гибкие сигнатуры функций, замыкания и фабрики, декораторы, генераторы и ленивые конвейеры, comprehensions и sorted с key. Пять паков — от донатов марафона на *args до дайджеста продаж на sorted с ключом-кортежем. Первый пак бесплатный, дальше premium. Каждое решение прогоняется судьёй на скрытых входных данных, поэтому угадать ответ по одному примеру не получится.

Для кого

Для тех, кто уже пишет функции в Python и хочет закрыть конкретный пробел перед собеседованием — decorators, generators, closures звучат знакомо, но руками написать сходу не выходит. Уровень средний: без объяснения синтаксиса с нуля, сразу к применению.

что ещё отработаешь

  • Собирать генераторы через yield для ленивой пагинации, нарастающего баланса и фильтрации по условию
  • Строить list и dict comprehensions с отбором и извлечением поля в одну строку
  • Сортировать sorted() с ключом-кортежем: несколько критериев и обработка ничьих
  • Собирать конвейеры map → filter, где порядок этапов меняет результат
программа

программа пути

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

25 задач · 5 модулей
1.1
Заказ у бариста
Соберите выкрик заказа с двумя параметрами по умолчанию — размер и число шотов задаются только когда отличаются
1.2
Донаты марафона
Сложите донаты, сколько бы их ни прилетело: *args принимает любое число аргументов, включая ноль
1.3
Адрес запроса к API
Соберите URL с query-параметрами из **kwargs — отсортированными, чтобы кэш узнавал одинаковые запросы
1.4
Строка лога
Сигнатура-комбайн: уровень позиционно, куски через *args, разделитель — только по имени после звёздочки
1.5
Настройки запуска
Дефолты плюс переопределения из **kwargs — новый словарь, исходный конфиг неприкосновенен
2.1
Нумератор талонов
Фабрика счётчиков для окон МФЦ: возвращённая функция помнит номер между вызовами через nonlocal, и каждое окно ведёт свою очередь
2.2
Конструктор акций
Фабрика функций-скидок маркетплейса: процент запоминается замыканием, цена в копейках считается только целочисленно
2.3
Штамп пересменки
Фабрика функций-штампов для заводского журнала: метка смены зашивается замыканием, каждая запись получает префикс в квадратных скобках
2.4
Правило анкеты
Фабрика валидаторов длины для полей анкеты: порог зашит замыканием, длина меряется после strip, граница включительно
2.5
Номера заказов пекарни
Фабрика генераторов номеров: префикс и стартовый номер зашиты замыканием, счётчик растёт через nonlocal, формат PREFIX-0001
3.1
Счётчик вызовов трекера
Напишите первый декоратор: обёртка считает вызовы функции в собственном атрибуте calls и пробрасывает результат
решить без регистрации
3.2
Шлюз без минусов
Декоратор выпрямляет вход: отрицательный первый позиционный аргумент заменяется нулём, остальные аргументы неприкосновенны
3.3
Кэш последнего прогноза
Соберите кэш глубины один: обёртка помнит позиционные аргументы и результат последнего вызова и гасит точные повторы
3.4
Фильтр пустых отзывов
Декоратор-охранник: пустая после strip() строка возвращает None без вызова функции, непустая уходит внутрь нетронутой
3.5
Смоук-прогон обработчиков
Соберите фабрику декораторов: repeat_calls(times) прогоняет функцию times раз с теми же аргументами и возвращает список результатов
4.1
Отсчёт до старта
Первый генератор: yield выдаёт числа обратного отсчёта по одному, а после единицы — строку «Старт!»
4.2
Страницы ленты
Генератор режет ленту объявлений на страницы по per_page — очередная страница строится только по запросу
решить без регистрации
4.3
Баланс после операции
Генератор нарастающего итога: yield баланса карты после каждой операции выписки, минус легален
4.4
Фильтр событий офиса
Ленивый генератор-фильтр журнала умного офиса: yield событий нужного вида, next() достаёт первое не дочитывая
4.5
Траты в пределах бюджета
Ленивый генератор поверх любого iterable: yield трат, пока нарастающая сумма влезает в бюджет, — бесконечный источник не страшен
5.1
Витрина «Премиум»
Соберите list comprehension названия товаров дороже порога — отбор и извлечение поля одной строкой
5.2
Индекс по артикулу
Переупакуйте складскую выгрузку в словарь sku → запись через dict comprehension — при дубле артикула побеждает последняя
5.3
Порядок на спринт-борде
Отсортируйте задачи sorted-ом с ключом-кортежем: приоритет по убыванию, при равенстве — алфавит, вход не трогать
5.4
Конвейер уценки
Соберите map → filter: скидка по целочисленной формуле, затем отсев цен ниже минималки — порядок этапов решает всё
5.5
Дайджест продаж
Капстоун идиом: топ позиций по выручке через sorted с ключом-кортежем, итог генераторным выражением, форма результата — ровно три ключа
доступ к полной программе Платные модули этого пути входят в Premium. Условия подписки можно посмотреть на странице тарифов. от 490 ₽ / мес посмотреть тарифы первые 5 задач — бесплатно, без карты
первый шаг в этом пути

начни с задачи «Заказ у бариста»

После регистрации откроется путь «Python: функции и идиомы». Выбери модуль «Гибкие сигнатуры»: редактор и проверка доступны на странице задачи.

5 задач бесплатно

начать бесплатно

После регистрации откроется программа этого пути.

другие пути на этом языке