Ogarniam sobie podstawy dekoratorów i w przykładzie w poradniku jest cos takiego:
def decorator_fun(original_fun):
def wrapper_fun():
print("To sie wykona przed original")
return original_fun()
return wrapper_fun
@decorator_fun
def display():
print("funkcja original")
display()
i tak... z tego co rozumiem to za pomocą dekoratora możemy zmienić działanie funkcji bez jej bezpośredniej edycji,tak? Jednak nie rozumiem po co w tym przykładzie wrapper_fun()? Tzn czemu nie jest tak:
def decorator_fun(original_fun):
print("To sie wykona przed original")
return original_fun()
@decorator_fun
def display():
print("funkcja original")
display()
Dzieki za każdą odp.
Spejson_display
została zastąpiona dekoratorem. tak to po prostu działa. Sprawdź w obu przypadkach:print(display), print(decorator_fun)
.