Назад к вопросам
Middle
90
questionbank

Что такое декораторы в Python?

Sobes Copilot

Получайте ответы в реальном времени

Ответ от нейросети

sobes.tech AI

Декораторы — это синтаксический сахар для функций высшего порядка, позволяющий модифицировать поведение функции или класса, не изменяя их исходный код. Они представляют собой функции, принимающие другую функцию в качестве аргумента и возвращающие новую обернутую функцию.

Основные принципы работы:

  1. Функции как объекты первого класса: В Python функции можно передавать как аргументы, возвращать из других функций и присваивать переменным.
  2. Внутренние функции: Декоратор часто определяет внутреннюю функцию, которая выполняет дополнительную логику до или после вызова исходной функции.
  3. Замена функции: Декоратор подменяет исходную функцию обернутой функцией, сохраняя то же имя и сигнатуру.

Пример простого декоратора для замера времени выполнения функции:

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)

Декораторы используются для:

  • Логирования
  • Проверки доступа и аутентификации
  • Кэширования
  • Измерения производительности
  • Регистрации компонентов
  • Привязки маршрутов в веб-фреймворках

Декораторы также могут применяться к классам, изменяя их определение или поведение.