Назад к вопросам
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}")
Основные шаги:
- Определяется внешняя функция (фабрика) с параметрами.
- Внутри фабрики определяется функция-декоратор, которая принимает декорируемую функцию.
- Внутри функции-декоратора определяется функция-обертка, которая содержит логику декоратора и может использовать параметры из фабрики и аргументы декорируемой функции.
- Функция-декоратор возвращает функцию-обертку.
- Фабрика возвращает функцию-декоратор.
Это полезно для создания гибких и настраиваемых декораторов.