Imprimer le type de retour
Vous êtes en train de déboguer un paquet sur lequel vous avez travaillé avec vos amis. Il se passe quelque chose d'étrange avec les données renvoyées par l'une de vos fonctions, mais vous n'êtes même pas sûr de savoir quelle fonction est à l'origine du problème. Vous savez que des bogues peuvent parfois se glisser dans votre code lorsque vous attendez d'une fonction qu'elle renvoie une chose et qu'elle en renvoie une autre. Par exemple, si vous vous attendez à ce qu'une fonction renvoie un tableau numpy, mais qu'elle renvoie une liste, vous pouvez obtenir un comportement inattendu. Pour vous assurer que ce n'est pas la cause du problème, vous décidez d'écrire un décorateur, print_return_type()
, qui imprimera le type de la variable renvoyée par chaque appel de la fonction qu'il décore.
Cet exercice fait partie du cours
Écrire des fonctions en Python
Instructions
- Créez une fonction imbriquée,
wrapper()
, qui deviendra la nouvelle fonction décorée. - Appeler la fonction décorée.
- Renvoyez la nouvelle fonction décorée.
Exercice interactif pratique
Essayez cet exercice en complétant cet exemple de code.
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}))