Python Development
Александр Вотин, Backend developer · 06.10
Декораторы с параметрами. Простая магия
Декораторы в Python — это словно волшебная палочка, которая может менять поведение функции без изменения её исходного кода. Но иногда хочется добавить в это волшебство немного гибкости и передавать параметры. Кажется, что это сложно, но на самом деле, это просто как две строчки!
Декоратор с параметрами — это обычная функция, которая возвращает декоратор. В реальности добавляется только один уровень вложенности, и магия начинается.
Давай разберём простой пример на изображении, где мы хотим передавать параметр в декоратор, чтобы повторить вызов функции несколько раз.
- repeat(times) — это функция, которая принимает параметр times и возвращает декоратор.
- decorator(func) — сам декоратор, который принимает функцию func и возвращает обёртку (функцию wrapper).
- wrapper(args, *kwargs) — функция-обёртка, которая вызывает нашу функцию func несколько раз (в данном случае три).
Почему это просто. Ты добавляешь всего одну функцию, которая возвращает декоратор. Вся магия в том, что параметры передаются в декоратор как обычные аргументы функции, и ты получаешь крутую гибкость с минимумом кода.
Когда это нужно. Когда тебе нужно логировать что-то с разными уровнями отладки. Когда требуется повторять функции, вводить паузы или тайм-ауты. Для динамического управления поведением функции в зависимости от параметров.
еще контент автора
еще контент автора
Python Development
Александр Вотин, Backend developer · 06.10
войдите, чтобы увидеть
и подписаться на интересных профи