Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre Chaînage de Décorateurs | Décorateurs
Techniques Python Intermédiaires
course content

Contenu du cours

Techniques Python Intermédiaires

Techniques Python Intermédiaires

1. Emballage et Déballage
2. Arguments dans les Fonctions
3. Fonction Comme Argument
4. Portée des Variables
5. Décorateurs

book
Chaînage de Décorateurs

Chaînage des décorateurs en Python est une fonctionnalité puissante qui vous permet d'appliquer plusieurs décorateurs à une seule fonction. Chaque décorateur modifie ou améliore la fonction d'une certaine manière, et ils sont appliqués dans un ordre spécifique. Voici un exemple pratique pour illustrer le chaînage des décorateurs :

Deux Décorateurs Simples

Tout d'abord, définissons deux décorateurs simples :

Chaînage des Décorateurs

Maintenant, appliquons ces décorateurs à une seule fonction :

1234567891011121314151617181920
def decorator_one(func): def wrapper(): print("Decorator one start") func() print("Decorator one end") return wrapper def decorator_two(func): def wrapper(): print("Decorator two start") func() print("Decorator two end") return wrapper @decorator_one @decorator_two def greet(): print("Hello!") greet()
copy

Dans chaque décorateur, il y a du code qui s'exécute avant de passer au décorateur suivant et après l'achèvement de ce décorateur. Cela fonctionne de manière superposée. Ils sont appliqués dans l'ordre où ils sont listés, de haut en bas. La sortie du décorateur supérieur devient l'entrée pour le suivant en bas. Cette superposition peut ajouter plusieurs fonctionnalités à la fonction originale.

Ordre d'exécution

Lorsque greet() est appelé, l'ordre d'exécution sera :

  1. Depuis decorator_one, le premier print est exécuté ;
  2. À l'intérieur de decorator_one, depuis decorator_two, le premier print est exécuté ;
  3. Enfin, la fonction greet originale est exécutée ;
  4. Ensuite, revenir en arrière et terminer l'exécution de decorator_two en imprimant le message ;
  5. Le code entier est terminé en exécutant la dernière instruction print dans decorator_one.

La sortie sera :

Chaîner les décorateurs est un moyen puissant d'étendre le comportement des fonctions de manière modulaire et lisible.

J'espère que le prochain défi vous aidera à mieux comprendre ce sujet.

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 5. Chapitre 5
We're sorry to hear that something went wrong. What happened?
some-alt