Назад к вопросам
Middle
90
questionbank
Что такое декораторы в Python?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
Декораторы — это синтаксический сахар для функций высшего порядка, позволяющий модифицировать поведение функции или класса, не изменяя их исходный код. Они представляют собой функции, принимающие другую функцию в качестве аргумента и возвращающие новую обернутую функцию.
Основные принципы работы:
- Функции как объекты первого класса: В Python функции можно передавать как аргументы, возвращать из других функций и присваивать переменным.
- Внутренние функции: Декоратор часто определяет внутреннюю функцию, которая выполняет дополнительную логику до или после вызова исходной функции.
- Замена функции: Декоратор подменяет исходную функцию обернутой функцией, сохраняя то же имя и сигнатуру.
Пример простого декоратора для замера времени выполнения функции:
import time
def timer_decorator(func):
# Внутренняя функция-обертка
def wrapper(*args, **kwargs):
start_time = time.time()
result = func(*args, **kwargs) # Вызов исходной функции
end_time = time.time()
print(f"Функция {func.__name__} выполнилась за {end_time - start_time:.4f} секунд")
return result
return wrapper # Возвращаем обернутую функцию
# Применение декоратора
@timer_decorator
def my_function(n):
total = 0
for i in range(n):
total += i
return total
# Вызов декорированной функции
my_function(1000000)
Декораторы используются для:
- Логирования
- Проверки доступа и аутентификации
- Кэширования
- Измерения производительности
- Регистрации компонентов
- Привязки маршрутов в веб-фреймворках
Декораторы также могут применяться к классам, изменяя их определение или поведение.