Как передать аргументы в декоратор
Python
Middle
Без компании
Как передать аргументы в декоратор
Ответы
Декораторы с аргументами требуют дополнительного уровня вложенности. Внешняя функция принимает аргументы декоратора, а внутренняя — саму декорируемую функцию.
```
def repeat(num_times):
def decorator(func):
def wrapper(*args, **kwargs):
for _ in range(num_times):
result = func(*args, **kwargs)
return result
return wrapper
return decorator
@repeat(num_times=3)
def greet(name):
print(f"Hello {name}")
greet("Alice") # Выведет "Hello Alice" 3 раза
```
Ключевые моменты:
- Внешняя функция (`repeat`) принимает параметры декоратора
- Средний слой (`decorator`) принимает декорируемую функцию
- Внутренняя функция (`wrapper`) реализует логику декоратора
- При использовании синтаксис `@decorator(arg)`