синтаксический сахар в питоне для изящной реализации паттерна декоратор
делаем callable который в аргументах принимает другой callable
пишем
пишем
@decorator
def function():
и в рантайме в момент импорта модуля в таблице точек входа в модуле (он же объект)
вход в function меняется во вход в decorator
после чего в def decorator() можно писать какое нибудь логирование, try \ except \ final \ ленивую иницализацию \ валидацию параметров \ проверку прав доступа
что угодно
его очень любят использовать для роутинга и access management в web фреймворках