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}")
Қадамҳои асосӣ:
- Функсияи хориҷӣ (фабрика) бо параметрҳо муайян карда мешавад.
- Дар дохили фабрика, функсияи декоратор, ки функсияи барои декор карданро қабул мекунад, муайян карда мешавад.
- Дар дохили функсияи декоратор, функсияи пӯшак, ки логикаи декораторро дар бар мегирад ва метавонад аз параметрҳои фабрика ва аргументҳои функсияи декоршуда истифода кунад, муайян карда мешавад.
- Функсияи декоратор функсияи пӯшакро баргардон мекунад.
- Фабрика функсияи декораторро баргардон мекунад.
Ин барои эҷоди декораторҳои чандир ва конфигуратсионӣ муфид аст.