Декораторы в Python: функции, @ и параметры
Уроки курсаДекораторы в Python: функции, @ и параметры
Декоратор с параметрами
Если у декоратора есть настройка, появляется ещё один уровень функции — фабрика декораторов.
from functools import wraps
def repeat(times: int):
if times < 1:
raise ValueError("times must be positive")
def decorator(func):
@wraps(func)
def wrapper(*args, **kwargs):
result = None
for _ in range(times):
result = func(*args, **kwargs)
return result
return wrapper
return decorator
Теперь @repeat(3) сначала вызывает фабрику, получает декоратор и только затем оборачивает функцию. Не прячьте в декоратор критичное поведение без явного имени: транзакции, retry и авторизация должны оставаться наблюдаемыми и тестируемыми.
0 / 0
К странице курса0 / 0
К странице курса