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
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"
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"))
Ausgabe:
<b><i>Hello world</i></b>
Ü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")
Ausgabe:
I got args! Look: Peter, Venkman My name is Peter Venkman
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!