Gib den Rückgabetyp aus
Du führst gerade ein Debugging für ein Paket durch, an dem du zusammen mit Freundinnen und Freunden arbeitest. Bei den zurückgegebenen Daten einer deiner Funktionen passiert etwas Merkwürdiges, aber du weißt nicht einmal, welche Funktion die Ursache dafür ist. Du weißt, dass sich manchmal Bugs einschleichen, wenn du von einer Funktion einen bestimmten Rückgabewert erwartest, sie aber etwas anderes zurückgibt. Wenn du zum Beispiel ein numpy-Array erwartest, du aber stattdessen eine Liste zurückbekommst, kann das zu unerwartetem Verhalten führen. Um sicherzugehen, dass das nicht das Problem ist, schreibst du einen Decorator print_return_type(), der bei jedem Aufruf einer dekorierten Funktion den Typ der zurückgegebenen Variable ausgibt.
Diese Übung ist Teil des Kurses
<Kurs>Funktionen in Python schreiben</Kurs>Übungsanweisungen
- Erstelle eine verschachtelte Funktion
wrapper(), die zur neuen dekorierten Funktion wird. - Rufe die dekorierte Funktion auf.
- Gib die neue dekorierte Funktion zurück.
Interaktive praktische Übung
Versuche dich an dieser Übung, indem du diesen Beispielcode vervollständigst.
def print_return_type(func):
# Define wrapper(), the decorated function
____ ____(____, ____):
# Call the function being decorated
result = ____(____, ____)
print('{}() returned type {}'.format(
func.__name__, type(result)
))
return result
# Return the decorated function
return ____
@print_return_type
def foo(value):
return value
print(foo(42))
print(foo([1, 2, 3]))
print(foo({'a': 42}))