Menu
Coddy logo textTech

Składnia Python

Lekcja 6 z 12 w kursie Dekoratory w Pythonie w Coddy.

W poprzedniej lekcji zobaczyliśmy, jak tworzyć dekoratory funkcji. Python oferuje jednak znacznie bardziej elegancki sposób uzyskania tej funkcjonalności za pomocą symbolu @.

Na przykład:

def my_decorator(func):
    def wrapper():
        print("Before function is called.")
        func()
        print("After function is called.")
    return wrapper

@my_decorator
def my_function():
	print("Inside my_function.")

Gdy uruchomimy my_function(), zobaczymy taki wynik:

Before function is called.
Inside my_function.
After function is called.

Pokazuje to, że dekorator funkcji my_decorator mógł zmienić działanie my_function, dodając dodatkowy kod przed jej wywołaniem i po nim.

challenge icon

Wyzwanie

Łatwy

Masz podany kod funkcji add.

Twoim zadaniem jest napisać dekorator funkcji o nazwie debug, tak jak w poprzedniej lekcji, ale z kilkoma dodatkami:

  • Dołącz dekorator funkcji debug do add za pomocą symbolu @.
  • Funkcja debug powinna obsługiwać argumenty funkcji.

Aby obsłużyć funkcję z argumentami w dekoratorze,

def my_decorator(func):
    def wrapper(a, b):
        print("Before function is called.")
        func(a, b)
        print("After function is called.")
    return wrapper

Przykład:

Po wywołaniu funkcji add(2, 3) powinno zostać wypisane,

Calling add with arguments (2, 3)
add returned: 5

Spróbuj swoich sił

# Wpisz kod tutaj


def add(a, b):
    return a + b

Wszystkie lekcje w sekcji Dekoratory w Pythonie

Poćwicz samodzielnie: Kompilator Python online