Maison >développement back-end >Tutoriel Python >Comment fonctionnent les décorateurs fonctionnels et comment peuvent-ils être enchaînés ?

Comment fonctionnent les décorateurs fonctionnels et comment peuvent-ils être enchaînés ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-27 03:13:11368parcourir

How Do Function Decorators Work, and How Can They Be Chained?

Décorateurs de fonctions et chaînage

Que sont les décorateurs de fonctions ?

Les décorateurs sont des fonctions qui modifient d'autres fonctions. Ils fournissent un moyen d'améliorer ou d'étendre le comportement d'une fonction sans la modifier directement.

Syntaxe :

@decorator_function
def function_to_decorate():
    # Function body

Chaînage des décorateurs

Décorateurs peut être chaîné, ce qui signifie que vous pouvez appliquer plusieurs décorateurs à la même fonction. L'ordre dans lequel vous enchaînez les décorateurs est important.

@decorator2
@decorator1
def function_to_decorate():
    # Function body

Dans cet exemple, decorator1 sera appliqué en premier, suivi de decorator2.

Exemple

Pour obtenir l'objectif souhaité sortie, vous pouvez créer des décorateurs personnalisés :

# Decorator for bolding text
def makebold(fn):
    def wrapper():
        return "<b>" + fn() + "</b>"
    return wrapper

# Decorator for italicizing text
def makeitalic(fn):
    def wrapper():
        return "<i>" + fn() + "</i>"
    return wrapper

@makebold
@makeitalic
def say():
    return "Hello"

print(say())  # Output: "<b><i>Hello</i></b>"

Dans cet exemple, le décorateur @makebold est appliqué en premier, suivi de @makeitalic. Le résultat est "Bonjour" entouré de balises grasses et italiques.

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!

Déclaration:
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