Contenu du cours
Techniques Python Intermédiaires
Techniques Python Intermédiaires
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 :
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))
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 :
- Prendre une fonction comme argument.
- Enfermer cette fonction dans une nouvelle fonction définie (wrapper).
- 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.
- 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.
- Ensuite, il définit la fonction add. Comme le décorateur, cette fonction n'est pas encore exécutée, juste définie.
- 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 dudecorator
, il définit lewrapper
puis le renvoie. Ainsi,add
ne se réfère plus à la fonctionadd
originale mais à la fonctionwrapper
renvoyée par ledecorator
. - 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.
Merci pour vos commentaires !