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

Что такое фабрика декораторов?

Sobes Copilot

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

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

sobes.tech AI

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

# Функция-фабрика декораторов
def my_decorator_factory(prefix):
    # Внутренняя функция (декоратор), которая принимает функцию для декорирования
    def my_decorator(func):
        # Еще одна внутренняя функция (обертка), которая выполняет действия декоратора
        def wrapper(*args, **kwargs):
            print(f"{prefix}: Перед вызовом функции {func.__name__}")
            result = func(*args, **kwargs)
            print(f"{prefix}: После вызова функции {func.__name__}")
            return result
        return wrapper
    return my_decorator

# Использование фабрики для создания декораторов с разным префиксом
@my_decorator_factory("DEBUG")
def some_function():
    print("Выполняется some_function")

@my_decorator_factory("INFO")
def another_function(x, y):
    print(f"Выполняется another_function с аргументами {x}, {y}")
    return x + y

some_function()
result = another_function(5, 10)
print(f"Результат: {result}")

Основные шаги:

  1. Определяется внешняя функция (фабрика) с параметрами.
  2. Внутри фабрики определяется функция-декоратор, которая принимает декорируемую функцию.
  3. Внутри функции-декоратора определяется функция-обертка, которая содержит логику декоратора и может использовать параметры из фабрики и аргументы декорируемой функции.
  4. Функция-декоратор возвращает функцию-обертку.
  5. Фабрика возвращает функцию-декоратор.

Это полезно для создания гибких и настраиваемых декораторов.