Menu
Coddy logo textTech

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 wrapper

W 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.

challenge icon

Wyzwanie

Łatwy

Napisz 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żyj func.__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: Hello

Możesz założyć, że wszystkie funkcje przekazywane do debug nie przyjmują argumentów.

Spróbuj swoich sił

Wszystkie lekcje w sekcji Dekoratory w Pythonie

Poćwicz samodzielnie: Kompilator Python online