Sobes.tech
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. Этот декоратор оборачивает исходную функцию, используя переданный параметр.