Sobes.tech
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}")

Հիմնական քայլեր՝

  1. Դրսի ֆունկցիա (գործարան) սահմանվում է պարամետրերով:
  2. Գործարանի ներսում սահմանվում է դեկորատոր ֆունկցիա, որը ընդունում է դեկորատորին:
  3. Դեկորատոր ֆունկցիայի ներսում սահմանվում է գցող ֆունկցիա, որը պարունակում է դեկորատորի տրամաբանությունը և կարող է օգտագործել գործարանի պարամետրերը և դեկորատոր ֆունկցիայի արգումենտները:
  4. Դեկորատոր ֆունկցիան վերադարձնում է գցող ֆունկցիան:
  5. Գործարանը վերադարձնում է դեկորատոր ֆունկցիան:

Սա օգտակար է ստեղծելու ճկուն և կոնֆիգուրացվող դեկորատորներ։