É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
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)