Декораторы в 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 — при каждом вызове.
