Un décorateur en Python est une fonction particulière qui permet de modifier ou d'améliorer le comportement d'autres fonctions ou classes. Il donne la possibilité de faire des modifications sur les fonctions ou classes que vous ne voulez pas modifier directement. Alors, comment créez-vous un décorateur en Python?
La réponse correcte est: "En définissant une fonction qui prend une autre fonction comme argument". En Python, les fonctions sont des objets de première classe. Cela signifie qu'ils peuvent être passés et retournés comme n'importe quel autre objet ou variable. Grâce à cette caractéristique, les fonctions peuvent être utilisées comme arguments pour d'autres fonctions. C'est ce principe qui est la base de la création des décorateurs en Python.
Voici un exemple de base pour illustrer cela:
def mon_decorateur(fonction):
def interne():
print("Ceci est ajouté avant la fonction originale")
fonction()
print("Ceci est ajouté après la fonction originale")
return interne
def ma_fonction():
print("Ceci est la fonction originale")
ma_fonction_decorée = mon_decorateur(ma_fonction)
ma_fonction_decorée()
Dans l'exemple ci-dessus, mon_decorateur
est une fonction qui prend une autre fonction (fonction
), la modifie et la renvoie. Ici, la modification consiste à ajouter du texte avant et après l'exécution de la fonction originale. Ensuite, nous utilisons cette fonction décorateur pour "décorer" ma_fonction
.
Après avoir exécuté ce code, vous obtiendrez le résultat suivant:
Ceci est ajouté avant la fonction originale
Ceci est la fonction originale
Ceci est ajouté après la fonction originale
Les décorateurs sont largement utilisés dans la programmation Python. Par exemple, ils sont couramment utilisés pour vérifier les permissions, enregistrer les logs, définir les propriétés et d'autres scénarios où vous voulez ajouter des fonctionnalités supplémentaires à une fonction ou une méthode sans modifier leur code source.