Middle+
Какво е фабрика за декоратори?
sobes.tech AI
Отговор от 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}")
Основни стъпки:
- Определя се външна функция (фабрика) с параметри.
- Вътре във фабриката се дефинира функция-декоратор, която приема функция за декориране.
- Вътре във функцията-декоратор се дефинира функция-обвивка, която съдържа логиката на декоратора и може да използва параметри от фабриката и аргументи на декорираната функция.
- Функцията-декоратор връща функция-обвивка.
- Фабриката връща функция-декоратор.
Това е полезно за създаване на гъвкави и конфигурируеми декоратори.