Python Syntax
Lektion 6 von 12 im Kurs Python-Dekoratoren von Coddy.
In der vorherigen Lektion haben wir gesehen, wie man Funktions-Dekoratoren erstellt. Python bietet jedoch eine viel elegantere Möglichkeit, diese Funktionalität mit dem @-Symbol zu erreichen.
Zum Beispiel,
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.")Wenn wir my_function() ausführen, sehen wir eine Ausgabe wie diese:
Before function is called.
Inside my_function.
After function is called.Dies zeigt, dass die Dekorator-Funktion my_decorator in der Lage war, das Verhalten von my_function zu ändern, indem sie zusätzlichen Code vor und nach dem Aufruf hinzugefügt hat.
Aufgabe
EinfachSie erhalten den Code für eine Funktion add.
Ihre Aufgabe ist es, einen Funktions-Decorator namens debug zu schreiben, wie in der letzten Lektion, aber mit einigen Ergänzungen:
- Fügen Sie den Funktions-Decorator
debugmit dem@-Symbol zuaddhinzu. - Die debug-Funktion sollte Funktionsargumente unterstützen.
Um eine Funktion mit Argumenten in einem Decorator zu unterstützen,
def my_decorator(func):
def wrapper(a, b):
print("Before function is called.")
func(a, b)
print("After function is called.")
return wrapperBeispiel:
Für einen Funktionsaufruf add(2, 3) sollte Folgendes ausgegeben werden:
Calling add with arguments (2, 3)
add returned: 5Probier es selbst
# Hier Code schreiben
def add(a, b):
return a + bAlle Lektionen in Python-Dekoratoren
Übe selbstständig: Online-Python-Compiler