Comprendre les décorateurs
Commenceons par un exemple simple. Ouvrez une nouvelle session d'interpréteur Python :
python3
Nous avons une fonction qui calcule le carré d'un nombre :
def square(x):
return x**2
Maintenant, disons que nous voulons ajouter une fonctionnalité à la fonction square
qui enregistre l'entrée et la sortie de la fonction chaque fois qu'elle est appelée. Nous pouvons le faire en utilisant un décorateur.
Voici le code pour le décorateur logger
:
def logger(func):
def wrapper(x):
print("Appel de la fonction :", func.__name__)
print("Entrée :", x)
result = func(x)
print("Sortie :", result)
return result
return wrapper
Maintenant, nous pouvons utiliser ce décorateur pour améliorer la fonction square
:
@logger
def square(x):
return x**2
Lorsque nous appelons square(5)
, la sortie sera :
Appel de la fonction : square
Entrée : 5
Sortie : 25
Comme vous pouvez le voir, le décorateur a ajouté la fonctionnalité souhaitée à la fonction square
sans modifier son code source.