Skriv ut returtypen
Du felsöker ett paket som du och dina kollegor har arbetat med tillsammans. Något konstigt händer med datan som returneras från en av dina funktioner, men du vet inte ens vilken funktion som orsakar problemet. Ibland kan buggar smyga sig in i koden när du förväntar dig att en funktion ska returnera en sak, men den returnerar något annat. Om du till exempel förväntar dig att en funktion ska returnera en numpy-array men den returnerar en lista, kan oväntat beteende uppstå. För att utesluta detta som orsak bestämmer du dig för att skriva en dekoratör, print_return_type(), som skriver ut typen av variabeln som returneras vid varje anrop av den funktion den dekorerar.
Den här övningen är en del av kursen
Att skriva funktioner i Python
Övningsinstruktioner
- Skapa en nästlad funktion,
wrapper(), som blir den nya dekorerade funktionen. - Anropa funktionen som dekoreras.
- Returnera den nya dekorerade funktionen.
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
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}))