Junior
Hogyan lehet meghívni egy dekorátort @ szimbólum használata nélkül?
sobes.tech MI
Válasz az MI-től
Egy dekorátor egy olyan függvény, amely egy másik függvényt argumentumként fogad, és általában kibővíti az eredeti funkcionalitását egy új függvény visszaadásával. Dekorátor hívható @ szimbólum nélkül is, ha kifejezetten alkalmazzuk a dekorátort az eredeti függvényre, és az eredményt ugyanarra vagy egy új változóra rendeljük.
Példa: az my_function függvény dekorálása az my_decorator dekorátorral.
@ szintaxis használata:
# my_decorator definíciója
def my_decorator(func):
def wrapper(*args, **kwargs):
print("A függvény hívása előtt")
result = func(*args, **kwargs)
print("A függvény hívása után")
return result
return wrapper
@my_decorator
def my_function():
print("my_function belsejében")
my_function()
Dekorátor hívása @ nélkül:
# ugyanaz a my_decorator definíció, mint fent
def my_decorator(func):
def wrapper(*args, **kwargs):
print("A függvény hívása előtt")
result = func(*args, **kwargs)
print("A függvény hívása után")
return result
return wrapper
def my_function():
print("my_function belsejében")
# Kifejezett dekorátor alkalmazása
my_function = my_decorator(my_function)
my_function()
Mindkét esetben az eredmény ugyanaz lesz. A my_decorator(my_function) hívás visszaadja a wrapper függvényt, amelyet aztán hozzárendelünk a my_function változóhoz, helyettesítve az eredeti függvényt. A @ szintaxis csak szintaktikus cukor ehhez az hozzárendelési művelethez.