Python для профессионаловОткрытые материалыДекораторы в Python: функции, @ и параметры

Декораторы в Python: функции, @ и параметры

Уроки курсаДекораторы в Python: функции, @ и параметры

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

from functools import wraps

def traced(func):
    @wraps(func)
    def wrapper(*args, **kwargs):
        print(f"call {func.__name__}")
        return func(*args, **kwargs)
    return wrapper

@traced
def add(a: int, b: int) -> int:
    return a + b

Запись @traced эквивалентна add = traced(add). Декоратор выполняется в момент определения функции, а wrapper — при каждом вызове.