Maison > développement back-end > Tutoriel Python > Comment créer et chaîner des décorateurs de fonctions en Python ?

Comment créer et chaîner des décorateurs de fonctions en Python ?

DDD
Libérer: 2024-12-24 19:47:15
original
795 Les gens l'ont consulté

How to Create and Chain Function Decorators in Python?

Comment créer des décorateurs de fonctions et les enchaîner ensemble

Introduction

Les décorateurs en Python permettent vous de modifier le comportement des fonctions sans modifier les fonctions elles-mêmes. Vous pouvez utiliser des décorateurs pour ajouter des fonctionnalités, vérifier les entrées/sorties et effectuer d'autres opérations avant et après l'appel de la fonction.

Création d'un décorateur

Pour créer un décorateur , définissez une fonction qui prend une autre fonction comme argument. Cette fonction doit renvoyer une nouvelle fonction qui enveloppe la fonction d'origine.

def make_bold(fn):
    # The new function the decorator returns
    def wrapper():
        # Insertion of some code before and after
        return "<b>" + fn() + "</b>"
    return wrapper
Copier après la connexion

Chaînage de décorateurs

Vous pouvez chaîner des décorateurs pour appliquer plusieurs modifications à une fonction. Appliquez simplement chaque décorateur tour à tour, comme indiqué ci-dessous :

@make_bold
@make_italic
def say():
    return "hello"
Copier après la connexion

Ce code applique le décorateur make_bold au décorateur make_italic, qui à son tour est appliqué à la fonction say. Le résultat est que la fonction say renvoie une chaîne à la fois en gras et en italique.

Exemple : chaîner des décorateurs pour formater le texte

Supposons que vous ayez une fonction qui renvoie un chaîne de texte. Vous souhaitez ajouter une mise en forme grasse et italique au texte. Vous pouvez utiliser les décorateurs définis ci-dessus pour y parvenir :

@make_bold
@make_italic
def formatted_text(text):
    return text

print(formatted_text("Hello world"))
Copier après la connexion

Sortie :

<b><i>Hello world</i></b>
Copier après la connexion

Passer des arguments aux décorateurs

Vous pouvez transmettre des arguments aux décorateurs en plaçant les arguments dans parenthèses :

def a_decorator_passing_arguments(function_to_decorate):
    def a_wrapper_accepting_arguments(arg1, arg2):
        print("I got args! Look: {0}, {1}".format(arg1, arg2))
        function_to_decorate(arg1, arg2)
    return a_wrapper_accepting_arguments

@a_decorator_passing_arguments
def print_full_name(first_name, last_name):
    print("My name is {0} {1}".format(first_name, last_name))

print_full_name("Peter", "Venkman")
Copier après la connexion

Sortie :

I got args! Look: Peter, Venkman
My name is Peter Venkman
Copier après la connexion

Conclusion

En comprenant comment créer et enchaîner des décorateurs, vous pouvez étendre les fonctionnalités de vos fonctions Python. Cette technique puissante vous permet de modifier le comportement, d'effectuer des contrôles et d'enrichir votre code de manière modulaire et réutilisable.

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