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}")
Հիմնական քայլեր՝
- Դրսի ֆունկցիա (գործարան) սահմանվում է պարամետրերով:
- Գործարանի ներսում սահմանվում է դեկորատոր ֆունկցիա, որը ընդունում է դեկորատորին:
- Դեկորատոր ֆունկցիայի ներսում սահմանվում է գցող ֆունկցիա, որը պարունակում է դեկորատորի տրամաբանությունը և կարող է օգտագործել գործարանի պարամետրերը և դեկորատոր ֆունկցիայի արգումենտները:
- Դեկորատոր ֆունկցիան վերադարձնում է գցող ֆունկցիան:
- Գործարանը վերադարձնում է դեկորատոր ֆունկցիան:
Սա օգտակար է ստեղծելու ճկուն և կոնֆիգուրացվող դեկորատորներ։