Sobes.tech
Back to questions
Junior — Middle
62

Можно ли создать декоратор, который принимает параметры?

Answer from AI

sobes.tech AI

Да, в Python можно создать декоратор, который принимает параметры. Для этого обычно создают функцию-обёртку, которая принимает аргументы декоратора и возвращает сам декоратор.

Пример декоратора с параметрами:

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()
# Выведет "Hello" три раза

Здесь repeat — функция, принимающая параметр times, которая возвращает декоратор decorator. Этот декоратор оборачивает исходную функцию func в wrapper, который вызывает её нужное количество раз.