Урок 65. Практикум 16

📁 Блок: Python Fundamentals / Практикум ⏱️ Время изучения: ~90 мин 🎯 Сложность: Средняя
#def #return #isinstance #from #import #basicconfig #print #range #for #in #get #type #is #if #not #raise #len #else #popitem #join #str #items #add #zip #try #except #as #or #and #class #pass #functools

⚡ Кратко: суть урока

Практикум 16 — шесть задач на декораторы: обрезка строк, параметризованные декораторы, кэширование, LRU-кэш, логирование вызовов и проверка типов аргументов.

  • Декоратор без параметров: @limit_output.
  • Декоратор с параметрами: @limit_output(26).
  • Кэширование через словарь в замыкании.
  • Ограниченный кэш на OrderedDict с вытеснением старых записей.
  • Логирование вызовов в файл через модуль logging.
  • Проверка позиционных аргументов через isinstance.

Что запомнить: декораторы — это замыкания, которые оборачивают функции; параметризованные декораторы требуют тройной вложенности.

О чём этот урок

Это шестнадцатый практикум курса. Все задания посвящены декораторам — функциям высшего порядка, которые добавляют поведение перед или после вызова целевой функции. Внутри каждого декоратора используется замыкание, поэтому урок продолжает тему урока 64.

Что повторим и закрепим

  • Простой декоратор без параметров: функция принимает функцию и возвращает обёртку.
  • Параметризованный декоратор: фабрика, которая сначала получает аргументы, а потом — декорируемую функцию.
  • Сохранение состояния в замыкании: словари для кэша, счётчики, накопители.
  • Работа с аргументами через *args и **kwargs.
  • Логирование через стандартный модуль logging.
  • Проверка типов через isinstance и генерация TypeError.
  • Современные практики: аннотации типов, f-strings, именование по PEP 8, guard clauses.

📚 Что повторить перед изучением

🎯 Что изучать дальше

  • → Урок 66 — Основы ООП
  • Попробуйте переписать декораторы из практикума с использованием functools.wraps — это сохранит метаданные исходных функций.
  • Изучите functools.lru_cache как готовую альтернативу собственному кэшу.