Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre Introduction aux 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
Introduction aux Décorateurs

Discutons des décorateurs. Notez que les decorators peuvent être un sujet difficile pour les débutants. Nous examinerons les décorateurs en détail, étape par étape, en expliquant comment ils fonctionnent. Cela peut être difficile à comprendre au début. Êtes-vous prêt à relever ces défis ? C'est pour cela que vous êtes ici !

Les Decorators sont des fonctions qui ajoutent des fonctionnalités supplémentaires à une autre fonction, en utilisant des fermetures. Voici un exemple de fonctionnement d'un décorateur :

123456789101112131415161718192021
def decorator(func): def wrapper(argument1, argument2): print("Function starts executing") result = func(argument1, argument2) print("Function ends executing") return result return wrapper def add(a, b): print(f"Function add: {a} + {b}") return a + b add = decorator(add) print(add(14, 12)) print(add(11, 28)) print(add(33, 16))
copy

Dans cet exemple, la fonction decorator() prend une autre fonction comme argument, définit une fonction wrapper(), enferme la fonction donnée dans wrapper(), et retourne wrapper(). Il y a trois étapes dans le fonctionnement d'un décorateur :

  1. Prendre une fonction comme argument.
  2. Enfermer cette fonction dans une nouvelle fonction définie (wrapper).
  3. Retourner la fonction wrapper, qui contient maintenant la fonction originale.

La fonction wrapper() contient la logique principale du décorateur et invoque la fonction avec les paramètres donnés. La fonction add() est réassignée par la fonction wrapper() retournée par decorator(), qui contient maintenant la fonction add() enfermée.

  1. L'interpréteur Python lit d'abord et définit la fonction décorateur. Il n'exécute aucun code à l'intérieur du décorateur à ce stade ; il note simplement qu'il y a une fonction nommée décorateur.
  2. Ensuite, il définit la fonction add. Comme le décorateur, cette fonction n'est pas encore exécutée, juste définie.
  3. Après avoir défini add, la ligne suivante add = decorator(add) est exécutée. C'est là que la fonction décorateur est appelée pour la première fois. Elle reçoit la fonction add comme argument. À l'intérieur du decorator, il définit le wrapper puis le renvoie. Ainsi, add ne se réfère plus à la fonction add originale mais à la fonction wrapper renvoyée par le decorator.
  4. Lorsque add(14, 12) est exécuté, cela appelle la fonction wrapper avec 14 et 12.
  • wrapper imprime "La fonction commence à s'exécuter"
  • Appelle la fonction add originale avec 14 et 12, qui imprime "Fonction add: 14 + 12" et renvoie 26.
  • Imprime "La fonction termine son exécution".
  • wrapper renvoie 26, qui est imprimé par print(add(14, 12)).

Les appels suivants répètent les étapes précédentes.

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

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