Maison > développement back-end > Tutoriel Python > Comment utiliser des décorateurs avec des paramètres en Python ?

Comment utiliser des décorateurs avec des paramètres en Python ?

DDD
Libérer: 2024-12-23 19:52:18
original
366 Les gens l'ont consulté

How Do I Use Decorators with Parameters in Python?

Décorateurs avec paramètres : une syntaxe différente

Les décorateurs fournissent un mécanisme puissant pour étendre les fonctionnalités des fonctions en Python. Cependant, les décorateurs avec paramètres nécessitent une syntaxe légèrement différente de celle des décorateurs traditionnels.

La syntaxe des décorateurs avec arguments implique une structure de fonction à deux niveaux :

  1. Decorator Factory : Le premier calque, appelé usine de décorateur, prend un paramètre et renvoie la fonction de décorateur réelle.
  2. Décorateur Fonction : La couche interne, ou fonction de décorateur, prend la fonction cible et l'enveloppe de fonctionnalités supplémentaires.

Pour illustrer cela, prenons un exemple :

def execute_complete_reservation(test_case, insurance_mode):
    def inner_function(self, *args, **kwargs):
        # Additional functionality
        if insurance_mode:
            # Perform insurance actions
        else:
            # Perform non-insurance actions

        # Execute the target function
        test_case(self, *args, **kwargs)
    return inner_function
Copier après la connexion

Dans cet exemple, execute_complete_reservation est la fabrique de décorateurs qui renvoie la fonction de décorateur inner_function. La fonction décorateur prend la fonction cible test_case et l'enveloppe avec des fonctionnalités supplémentaires liées à la gestion des assurances.

Pour appliquer ce décorateur, nous utiliserions une syntaxe similaire à :

@execute_complete_reservation(True)
def test_booking_gta_object(self):
    # Booking functionality
Copier après la connexion

Cette syntaxe passe la vraie valeur à l'usine de décorateurs, qui crée ensuite la fonction de décorateur qui intercepte et améliore les fonctionnalités de test_booking_gta_object.

En comprenant la syntaxe et mécanisme derrière les décorateurs avec paramètres, les développeurs peuvent étendre efficacement les capacités des fonctions Python et créer un code plus robuste et flexible.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal