PaliSkill
Python avancé

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