Leçon 6 / 10 — Chapitre 4: Décorateurs
Plusieurs décorateurs empilés
Une fonction peut avoir plusieurs décorateurs, empilés les uns sur les autres : ils s'appliquent du plus proche de la fonction vers le plus éloigné, comme des enveloppes successives.
def gras(fonction):
def enveloppe(*args, **kwargs):
return "**" + fonction(*args, **kwargs) + "**"
return enveloppe
def italique(fonction):
def enveloppe(*args, **kwargs):
return "_" + fonction(*args, **kwargs) + "_"
return enveloppe
@gras
@italique
def message():
return "Bonjour"
print(message())
Ce code affiche **_Bonjour_** : @italique (le plus proche de def message) s'applique en premier, produisant _Bonjour_ ; @gras s'applique ensuite sur ce résultat déjà enveloppé, l'entourant à son tour d'astérisques.
L'ordre d'écriture des décorateurs empilés compte donc directement sur le résultat final : inverser @gras et @italique donnerait _**Bonjour**_ à la place — les deux décorateurs appliquent leur enveloppe dans l'ordre inverse de celui où ils sont lus visuellement (de bas en haut, du plus proche de la fonction au plus éloigné).
À vous de jouer : écrivez deux petits décorateurs qui transforment un texte différemment, empilez-les dans un ordre puis dans l'autre, et comparez les deux résultats.
Continuez ce module
Débloquez les leçons restantes ainsi que la certification finale.
2 500 XOF / 3,81 € / 4,15 $
Débloquez les 87 leçons restantes de ce module
Votre paiement est vérifié avant l'activation de l'accès