Когда несколько декораторов размещены на одной функции, Python применяет их в порядке снизу вверх во время определения — декоратор ближайший к функции применяется первым.
Синтаксис со стеком декораторов — это просто сокращение для вложенных вызовов функций:
@decorator_a
@decorator_b
def my_func():
pass
# Эквивалентно:
my_func = decorator_a(decorator_b(my_func))
decorator_b оборачивает my_func первым, затем decorator_a оборачивает результатdecorator_a срабатывает первой, затем логика decorator_bСамый внешний декоратор (decorator_a) последним оборачивает функцию, но первым выполняется при её вызове. Это различие между порядком оборачивания и порядком выполнения критично, когда декораторы имеют побочные эффекты или последовательно меняют поведение.
Когда декораторы стоят друг над другом, декоратор, ближайший к определению функции, применяется первым во время процесса обёртывания.
Новый — ещё не проверен сообществом
Вы