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