PaliSkill
Python avancé

Leçon 2 / 10 — Chapitre 4: Décorateurs

Le décorateur simple avec @

La syntaxe @nom_decorateur, placée juste au-dessus d'une définition de fonction, remplace exactement le motif f = decorateur(f) vu à la leçon précédente — en plus lisible.

def journaliser(fonction):
    def enveloppe():
        print("Appel de la fonction...")
        resultat = fonction()
        print("Fonction terminee")
        return resultat
    return enveloppe

@journaliser
def dire_bonjour():
    print("Bonjour")

dire_bonjour()

Ce code affiche exactement le même résultat que la leçon précédente : @journaliser juste au-dessus de def dire_bonjour(): équivaut à écrire dire_bonjour = journaliser(dire_bonjour) juste après sa définition — Python applique cette transformation automatiquement, dès la lecture du fichier.

Après décoration, appeler dire_bonjour() exécute en réalité enveloppe(), qui appelle à son tour la fonction d'origine (fonction(), la véritable dire_bonjour) au milieu de son propre code — le nom dire_bonjour désigne désormais la version enveloppée, pas l'originale.

Un décorateur peut envelopper n'importe quelle fonction respectant sa signature, ce qui le rend réutilisable sur plusieurs fonctions différentes, sans dupliquer journaliser :

@journaliser
def calculer():
    return 42

À vous de jouer : décorez une fonction de votre choix avec @journaliser (déjà écrite), et vérifiez que les messages s'affichent bien autour de son exécution.

🔒

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