Maison > Article > développement back-end > Comment utiliser les fonctions de décorateur en Python
Comment utiliser la fonction décorateur en Python
En programmation Python, les décorateurs sont un outil très utile. Cela nous permet d'étendre la fonction avec des fonctionnalités supplémentaires sans modifier le code de fonction d'origine. Les fonctions de décorateur peuvent effectuer automatiquement certaines opérations avant et après l'exécution de la fonction, telles que la journalisation, la synchronisation, la vérification des autorisations, etc. Cet article présentera les concepts de base des fonctions de décorateur et fournira quelques exemples de code concrets.
1. Définition de la fonction décorateur
Une fonction décorateur est une fonction qui accepte une fonction comme paramètre et renvoie une nouvelle fonction. Il peut être appliqué aux fonctions utilisant la syntaxe @. Voici un exemple de définition simple d'une fonction de décorateur :
def decorator_function(original_function): def wrapper_function(*args, **kwargs): # 在函数执行前的操作 print("Before executing the function") # 执行原始函数 result = original_function(*args, **kwargs) # 在函数执行后的操作 print("After executing the function") return result return wrapper_function
2. Application de la fonction de décorateur
Une fonction de décorateur peut effectuer certaines opérations supplémentaires avant et après l'exécution de la fonction. Voici un exemple d'utilisation d'une fonction décorateur pour implémenter une fonction de timing :
import time def timer_decorator(original_function): def wrapper_function(*args, **kwargs): start_time = time.time() result = original_function(*args, **kwargs) end_time = time.time() execution_time = end_time - start_time print(f"Execution time: {execution_time} seconds") return result return wrapper_function @timer_decorator def my_function(): time.sleep(1) print("Function executed") my_function()
Dans l'exemple ci-dessus, la fonction décorateur timer_decorator est appliquée à la fonction my_function. Lorsque my_function est appelé, le décorateur enregistre l'heure de début avant l'exécution de la fonction, calcule l'heure de fin après l'exécution de la fonction et calcule le temps d'exécution de la fonction.
3. Paramètres de la fonction décorateur
La fonction décorateur peut accepter des paramètres pour appliquer différents décorateurs à différentes fonctions. Voici un exemple de fonction de décorateur avec des paramètres :
def prefix_decorator(prefix): def decorator_function(original_function): def wrapper_function(*args, **kwargs): print(f"{prefix}: Before executing the function") result = original_function(*args, **kwargs) print(f"{prefix}: After executing the function") return result return wrapper_function return decorator_function @prefix_decorator("LOG") def my_function(): print("Function executed") my_function()
Dans l'exemple ci-dessus, la fonction prefix_decorator renvoie une fonction de décorateur qui imprime les informations du journal avec le préfixe avant et après l'exécution de la fonction.
4. Application de plusieurs décorateurs
Plusieurs fonctions de décorateur peuvent être appliquées à la même fonction pour former un effet d'empilement de décorateurs. Voici un exemple d'application de plusieurs décorateurs :
def decorator1(original_function): def wrapper_function(*args, **kwargs): print("Decorator 1: Before executing the function") result = original_function(*args, **kwargs) print("Decorator 1: After executing the function") return result return wrapper_function def decorator2(original_function): def wrapper_function(*args, **kwargs): print("Decorator 2: Before executing the function") result = original_function(*args, **kwargs) print("Decorator 2: After executing the function") return result return wrapper_function @decorator1 @decorator2 def my_function(): print("Function executed") my_function()
Dans l'exemple ci-dessus, les fonctions de décorateur decorator1 et decorator2 sont appliquées à la fonction my_function en séquence. Lorsque my_function est appelé, le décorateur 2 sera exécuté après le décorateur 1.
Résumé :
La fonction Decorator est un outil très utile en Python, qui peut étendre la fonction avec des fonctions supplémentaires sans modifier le code de la fonction d'origine. En fournissant quelques exemples de code concrets, cet article espère aider les lecteurs à comprendre les concepts de base des fonctions de décorateur et comment les utiliser. L'utilisation des fonctions de décorateur réduit la duplication de code et rend le code plus modulaire et maintenable.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!