CommencerCommencer gratuitement

Étiqueter vos fonctions

Le fait de baliser un élément signifie que vous lui avez attribué une ou plusieurs chaînes de caractères qui servent d'étiquettes. Par exemple, nous ajoutons souvent des balises aux e-mails ou aux photos afin de pouvoir les rechercher ultérieurement. Vous avez décidé de créer un décorateur qui vous permettra d'attribuer à vos fonctions une liste arbitraire de balises. Ces balises peuvent être utilisées à diverses fins :

  • Ajouter des informations sur les personnes ayant travaillé sur la fonction, afin qu'un utilisateur puisse identifier à qui s'adresser en cas de difficulté lors de son utilisation.
  • Le libellé « expérimental » est utilisé afin que les utilisateurs soient informés que les entrées et les sorties pourraient être modifiées à l'avenir.
  • Marquer toutes les fonctions que vous prévoyez de supprimer dans une future version du code.
  • Etc.

Cet exercice fait partie du cours

Écrire des fonctions en Python

Afficher le cours

Instructions

  • Définissez un nouveau décorateur, nommé decorator(), pour renvoyer.
  • Veuillez vous assurer que la fonction décorée conserve ses métadonnées.
  • Appelez la fonction en cours de décoration et renvoyez le résultat.
  • Renvoyez le nouveau décorateur.

Exercice interactif pratique

Essayez cet exercice en complétant cet exemple de code.

def tag(*tags):
  # Define a new decorator, named "decorator", to return
  def ____(____):
    # Ensure the decorated function keeps its metadata
    @____(____)
    def wrapper(*args, **kwargs):
      # Call the function being decorated and return the result
      return ____(____, ____)
    wrapper.tags = tags
    return wrapper
  # Return the new decorator
  return ____

@tag('test', 'this is a tag')
def foo():
  pass

print(foo.tags)
Modifier et exécuter le code