Декораторы с параметрами. Простая магия

Декораторы в Python — это словно волшебная палочка, которая может менять поведение функции без изменения её исходного кода. Но иногда хочется добавить в это волшебство немного гибкости и передавать параметры. Кажется, что это сложно, но на самом деле, это просто как две строчки!

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

Давай разберём простой пример на изображении, где мы хотим передавать параметр в декоратор, чтобы повторить вызов функции несколько раз.

  • repeat(times) — это функция, которая принимает параметр times и возвращает декоратор.
  • decorator(func) — сам декоратор, который принимает функцию func и возвращает обёртку (функцию wrapper).
  • wrapper(args, *kwargs) — функция-обёртка, которая вызывает нашу функцию func несколько раз (в данном случае три).

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

Когда это нужно. Когда тебе нужно логировать что-то с разными уровнями отладки. Когда требуется повторять функции, вводить паузы или тайм-ауты. Для динамического управления поведением функции в зависимости от параметров.

Декораторы с параметрами. Простая магия | Сетка — новая социальная сеть от hh.ru
repost

675

input message

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

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

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

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

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

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

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

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

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