Zastosowanie dekoratorów
Lekcja 5 z 12 w kursie Dekoratory w Pythonie w Coddy.
W Pythonie dekorator to funkcja, która przyjmuje inną funkcję jako dane wejściowe i rozszerza jej działanie bez jawnego modyfikowania jej kodu. Dekoratory to skuteczny sposób na elastyczną i wielokrotnego użytku modyfikację lub ulepszenie działania funkcji.
Oto przykład prostej funkcji dekoratora:
def my_decorator(func):
def wrapper():
print("Before the function is called.")
func()
print("After the function is called.")
return wrapperW tym przykładzie funkcja my_decorator przyjmuje inną funkcję func jako dane wejściowe i zwraca nową funkcję o nazwie wrapper.
Funkcja wrapper dodaje pewne działanie przed wywołaniem funkcji func i po nim.
Wyzwanie
ŁatwyNapisz funkcję dekoratora o nazwie debug, która przyjmuje funkcję func jako dane wejściowe i zwraca nową funkcję, która za każdym razem, gdy zostanie wywołana, wypisuje nazwę func oraz wartość zwracaną przez func.
Aby uzyskać nazwę
func, użyjfunc.__name__.
Oto przykład użycia dekoratora debug:
def hello():
return "Hello"
debug_hello = debug(hello)
debug_hello()W tym przykładzie używamy dekoratora debug, aby opakować funkcję hello i utworzyć nową funkcję o nazwie debug_hello. Gdy wywołamy debug_hello(), dekorator wypisze:
Calling hello
hello returned: HelloMożesz założyć, że wszystkie funkcje przekazywane do
debugnie przyjmują argumentów.
Spróbuj swoich sił
Wszystkie lekcje w sekcji Dekoratory w Pythonie
Poćwicz samodzielnie: Kompilator Python online