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