CommencerCommencer gratuitement

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

Afficher le cours

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}))
Modifier et exécuter le code