CommencerCommencer gratuitement

Marquez vos fonctions

Étiqueter quelque chose signifie que vous avez donné à cette chose une ou plusieurs chaînes de caractères qui agissent comme des étiquettes. Par exemple, nous marquons souvent des courriels ou des photos pour pouvoir les retrouver plus tard. Vous avez décidé d'écrire un décorateur qui vous permettra d'étiqueter vos fonctions avec une liste arbitraire d'étiquettes. Vous pouvez utiliser ces étiquettes pour de nombreuses choses :

  • Ajouter des informations sur les personnes qui ont travaillé sur la fonction, afin qu'un utilisateur puisse savoir à qui s'adresser s'il rencontre des difficultés lors de l'utilisation de la fonction.
  • L'étiquetage des fonctions comme "expérimentales" pour que les utilisateurs sachent que les entrées et les sorties peuvent changer à l'avenir.
  • Marquer les fonctions que vous prévoyez de supprimer dans une version future 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.
  • Veillez à ce que la fonction décorée conserve ses métadonnées.
  • Appelez la fonction décorée 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