Декораторы — это синтаксический сахар для функций высшего порядка, позволяющий модифицировать поведение функции или класса, не изменяя их исходный код. Они представляют собой функции, принимающие другую функцию в качестве аргумента и возвращающие новую обернутую функцию.
Основные принципы работы:
- Функции как объекты первого класса: В Python функции можно передавать как аргументы, возвращать из других функций и присваивать переменным.
- Внутренние функции: Декоратор часто определяет внутреннюю функцию, которая выполняет дополнительную логику до или после вызова исходной функции.
- Замена функции: Декоратор подменяет исходную функцию обернутой функцией, сохраняя то же имя и сигнатуру.
Пример простого декоратора для замера времени выполнения функции:
python
Декораторы используются для:
- Логирования
- Проверки доступа и аутентификации
- Кэширования
- Измерения производительности
- Регистрации компонентов
- Привязки маршрутов в веб-фреймворках
Декораторы также могут применяться к классам, изменяя их определение или поведение.