Heim > Backend-Entwicklung > Python-Tutorial > Wie erstellt und verkettet man Funktionsdekoratoren in Python?

Wie erstellt und verkettet man Funktionsdekoratoren in Python?

DDD
Freigeben: 2024-12-24 19:47:15
Original
795 Leute haben es durchsucht

How to Create and Chain Function Decorators in Python?

So erstellen Sie Funktionsdekoratoren und verketten sie miteinander

Einführung

Dekoratoren in Python ermöglichen Sie können das Verhalten von Funktionen ändern, ohne die Funktionen selbst zu ändern. Sie können Dekoratoren verwenden, um Funktionen hinzuzufügen, Eingabe/Ausgabe zu überprüfen und andere Vorgänge vor und nach dem Aufruf der Funktion auszuführen.

Einen Dekorator erstellen

So erstellen Sie einen Dekorator , Definieren Sie eine Funktion, die eine andere Funktion als Argument akzeptiert. Diese Funktion sollte eine neue Funktion zurückgeben, die die ursprüngliche Funktion umschließt.

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
Nach dem Login kopieren

Dekoratoren verketten

Sie können Dekoratoren verketten, um mehrere Änderungen an einer Funktion vorzunehmen. Wenden Sie einfach jeden Dekorator der Reihe nach an, wie unten gezeigt:

@make_bold
@make_italic
def say():
    return "hello"
Nach dem Login kopieren

Dieser Code wendet den Make_bold-Dekorator auf den Make_italic-Dekorator an, der wiederum auf die Say-Funktion angewendet wird. Das Ergebnis ist, dass die Say-Funktion eine Zeichenfolge zurückgibt, die sowohl fett als auch kursiv geschrieben ist.

Beispiel: Verketten Sie Dekoratoren zum Formatieren von Text

Angenommen, Sie haben eine Funktion, die a zurückgibt Textfolge. Sie möchten den Text fett und kursiv formatieren. Sie können die oben definierten Dekoratoren verwenden, um dies zu erreichen:

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

print(formatted_text("Hello world"))
Nach dem Login kopieren

Ausgabe:

<b><i>Hello world</i></b>
Nach dem Login kopieren

Übergabe von Argumenten an Dekoratoren

Sie können Argumente an Dekorateure übergeben, indem Sie die Argumente einschließen Klammern:

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")
Nach dem Login kopieren

Ausgabe:

I got args! Look: Peter, Venkman
My name is Peter Venkman
Nach dem Login kopieren

Fazit

Durch das Verständnis, wie man Dekoratoren erstellt und verkettet, Sie können die Funktionalität Ihrer Python-Funktionen erweitern. Mit dieser leistungsstarken Technik können Sie das Verhalten ändern, Prüfungen durchführen und Ihren Code auf modulare und wiederverwendbare Weise verbessern.

Das obige ist der detaillierte Inhalt vonWie erstellt und verkettet man Funktionsdekoratoren in Python?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage