Короткий ответ Декоратор — способ изменить или расширить поведение функции, метода или класса без изменения их исходного кода. По сути это функция, которая принимает другую функцию и возвращает новую функцию с расширенной функциональностью. Как это работает подробнее Синтаксический сахар. Запись @decorator перед определением эквивалентна строке func = decorator(func) после него. Обёртка. Внутри декоратора обычно определяется функция wrapper, которая выполняет дополнительные действия и затем вызывает исходную функцию. Применение. Декораторы используют для логирования, проверки прав, кэширования, валидации аргументов и подобных сквозных задач. Переиспользование. Общая логика выносится из тела функций в декоратор и применяется в чистом виде к разным функциям. Пример кода Что использовать на практике Сквозная логика. Выноси в декоратор повторяющиеся действия — логирование, замер времени, контроль доступа. Переиспользование. Часто нужные обёртки оформляй в отдельном модуле и применяй к разным функциям. Метаданные.