Back to questions
Junior — Middle
56
Каким образом можно передать параметры в функцию-декоратор для её настройки?
Answer from AI
sobes.tech AI
Чтобы передать параметры в функцию-декоратор для её настройки, нужно создать декоратор, который возвращает сам декоратор. То есть, внешний уровень — это функция с параметрами, которая возвращает функцию-декоратор.
Пример:
def repeat(times): # функция с параметром
def decorator(func): # сам декоратор
def wrapper(*args, **kwargs):
for _ in range(times):
func(*args, **kwargs)
return wrapper
return decorator
@repeat(times=3)
def say_hello():
print("Hello!")
say_hello()
Вывод будет:
Hello!
Hello!
Hello!
Таким образом, repeat — это функция, принимающая параметр times, которая возвращает декоратор decorator. Этот декоратор оборачивает исходную функцию, используя переданный параметр.