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

Что такое декоратор в Python и в каких случаях его можно применять?

Sobes Copilot

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

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

sobes.tech AI

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

Применяется в случаях:

  • Логирование: Запись информации о вызове функции (аргументы, результат, время выполнения).
  • Измерение времени выполнения: Определение производительности функции.
  • Проверка прав доступа: Ограничение выполнения функции для определенных пользователей или групп.
  • Кэширование: Сохранение результатов выполнения функции для повторного использования с теми же аргументами.
  • Обработка ошибок: Перехват исключений и выполнение дополнительных действий.
  • Повторный вызов функция при ошибке: Автоматическое повторное выполнение при возникновении определенных исключений.
  • Регистрация функций: Добавление функций в реестр или коллекцию.

Пример простого декоратора:

def my_decorator(func):
    def wrapper(*args, **kwargs):
        print("Что-то делаем до вызова функции")
        result = func(*args, **kwargs)
        print("Что-то делаем после вызова функции")
        return result
    return wrapper

@my_decorator
def say_hello(name):
    return f"Привет, {name}!"

# say_hello("мир") # Выведет:
# Что-то делаем до вызова функции
# Что-то делаем после вызова функции
# "Привет, мир!"