Декораторы с параметрами. Мощный инструмент Python

Обычный декоратор — это функция, которая добавляет дополнительные возможности к твоей функции. Например, выводит что-то перед или после вызова функции, проверяет параметры или записывает данные в лог. Но представь, что ты хочешь настроить поведение декоратора. Например:

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

Вот тут и приходят на помощь декораторы с параметрами. Они позволяют добавить гибкость и контроль.

Декоратор с параметрами — это как «трёхэтажный дом». Первый этаж (внешняя функция) — принимает параметры, которые нужны для настройки. Второй этаж (средняя функция) — принимает твою функцию. Третий этаж (внутренняя функция) — выполняет логику декоратора и вызывает оригинальную функцию.

На изображении декоратор, который перед вызовом функции будет выводить кастомное сообщение. Ты сам задаёшь, что именно он скажет.

  • Внешняя функция decorator_with_message(message). Ты передаёшь сообщение ("Привет! Эта функция сейчас запустится."). Функция возвращает сам декоратор (actual_decorator).
  • Средняя функция actual_decorator(func). Получает твою функцию (say_hello). Возвращает обёртку (wrapper).
  • Внутренняя функция wrapper(args, *kwargs). Выполняет дополнительную логику (вывод сообщения). Затем вызывает твою функцию и возвращает её результат.

Используй декораторы с параметрами если: - Хочешь, чтобы функция писала в лог файл с заданным уровнем важности (например, INFO или ERROR). - Нужно проверить входные данные перед выполнением функции. - Хочешь настроить, что именно делает декоратор, в зависимости от ситуации.

Ты можешь управлять поведением декоратора, просто меняя его параметры. Код остаётся компактным и легко читаемым. Один декоратор с параметрами может использоваться для множества функций.

Декораторы с параметрами. Мощный инструмент Python | Сетка — новая социальная сеть от hh.ru
repost

197

input message

напишите коммент

· 26.11

Отлично

ответить

еще контент автора

еще контент автора

войдите, чтобы увидеть

и подписаться на интересных профи

в приложении больше возможностей

пока в веб-версии есть не всё — мы вовсю работаем над ней

сетка — cоциальная сеть для нетворкинга от hh.ru

пересекайтесь с теми, кто повлияет на ваш профессиональный путь