Dekoratoren in Python

Dekoratoren in Python
Pythons Dekoratoren sind eine äußerst hilfreiche Funktion, da die Programmierer anpassen können, wie sich eine Methode oder Klasse verhält. Mit Dekoratoren können wir eine andere Funktion zusammenfassen, um ihre Funktionalität vorübergehend zu ändern und gleichzeitig die Funktionalität der verpackten Methode zu erweitern. Lassen Sie uns zunächst ein paar Konzepte verstehen, die hilfreich sind, während wir uns über Dekorateure lernen, bevor wir uns zu tief in sie einlassen.

Wann man einen Python -Dekorateur verwendet

Wenn Sie das Verhalten einer Funktion ändern möchten, ohne die Methode selbst zu ändern, verwenden Sie einen Dekorateur. Hinzufügen von Protokollen, die Analyse der Leistung, das Ausführen von Caching, die Bestätigung der Autorisierung und andere Aufgaben sind einige bemerkenswerte Beispiele. Wann immer Sie einen identischen Code für viele Prozesse ausführen müssen, können Sie jedoch einen verwenden. Sie müssen die doppelten Programme dadurch nicht schreiben.

Voraussetzungen zum Verständnis von Dekoratoren

Wir müssen zuerst ein paar grundlegende Python -Konzepte verstehen, bevor wir etwas über Dekorateure lernen.

    • Funktionen können als Parameter in Python verwendet oder bereitgestellt werden, da sie sich wie Klassen und Objekte verhalten.
    • Ein Element des Objekttyps ist eine Funktion.
    • Die Funktion könnte in einer Variablen beibehalten werden.
    • Die Funktion wird als Argument in einer anderen Funktion verwendet.
    • Benutzer können eine andere Methode aus einer Funktion zurückgeben.
    • Sie können in Datenstrukturen wie Arrays und Hash -Tabellen aufbewahrt werden.

Betrachten Sie für ein gutes Verständnis die folgenden Fälle:

Beispiel 1:

Wir werden die Funktionen in diesem Fall als Objekte behandeln. Wir geben der Shout -Methode eine Variable. Dies generiert einen zweiten Namen, schreie, die auf das Funktionsobjekt verweist, das von der Shout -Methode angegeben ist, die Funktion jedoch nicht aufruft, die Funktion nicht aufgerufen wird.


Zu Beginn des Programms definieren wir die shout () -Funktion. Hier passieren wir das Attribut "T" als Parameter der Shout () -Funktion. Diese Funktion gibt den Text im oberen Format zurück. Wir verwenden die obere () -Funktion. Dann rufen wir die Print () -Methode auf, um die Zeile anzuzeigen. Innerhalb dieser Funktion nennen wir die Funktion shout (). Wir geben den Text an, den wir auf dem Bildschirm als Ausgabe erscheinen möchten. Wir setzen den Wert der Shout () -Funktion gleich der yell () -Funktion. In der letzten Zeile drucken wir den Wert der Yell -Methode, damit wir die Print () -Methode anwenden. Hier geben wir auch den Wert „Guten Morgen“ als Argument der yell () -Funktion an.

Beispiel 2:

Wir werden die Methode für eine andere Funktion als Parameter bereitstellen. Hier akzeptiert die Greet -Methode eine zweite Funktion als Argument (schreien und flüstern). Die Greet -Funktion ruft dann andere definierte Funktionen auf, die als Eingabe angegeben wurden.


Die Funktion shout () wird zu Beginn des Programms definiert. Hier ist das Argument für die Shout -Funktion das "T" -Element. Dies gibt den Text zurück in Upper Case, da wir die obere () -Funktion verwendet haben. Die Whisper () -Methode ist im folgenden Schritt definiert. Diese Funktion gibt den Text aus, der als Argument im unteren Format übergeben wurde. Die Methode Greet () wird jetzt verwendet. Hier bieten wir den Parameter „Func“, der in der folgenden Zeile definiert ist. Wir geben den Wert des Attributs „Func“ an, das wir auf der Konsole darstellen müssen. Schließlich verwenden wir die Print () -Funktion, um die Werte sowohl der Shout- als auch der Flüstern anzuzeigen.


Die zuvor erwähnten Fälle zeigen die Hauptkonzepte, die erforderlich sind, um die Dekorateure zu verstehen. Jetzt werden wir einige Instanzen ausführen, um die Verwendung von Dekoratoren zu demonstrieren.

Dekorateure

Wie bereits gesagt, können Dekorateure verwendet werden, um eine Funktion oder das Verhalten von Klassen zu ändern. Funktionen werden in der Wrapper -Funktion definiert, wenn sie Dekoratoren verwenden, wo sie als Parameter an andere Funktionen übergeben werden.

Beispiel 3:

Diese Illustration kann veranschaulichen, wie ein Dekorateur das Verhalten einer Funktion verändert.


Zunächst definieren wir den Dekorateur. Als nächstes nennen wir die Inner1 () -Funktion. Es ist eine Wrapper -Methode, bei der der Parameter aufgerufen wird. Innerhalb dieser Funktion verwenden wir die Funktion print (). Dann rufen wir die tatsächliche Funktion in der Wrapper -Funktion auf. Wir verwenden erneut die Print () -Methode.in der nächsten Zeile. Wir definieren eine Fun_Used () -Methode, die in der Wrapper aufgerufen werden soll. Jetzt passieren wir den „Fun_used“ innerhalb des Dekorateurs, um sein Verhalten zu ändern. Um den Code zu beenden, rufen wir die Methode auf.

Beispiel 4:

Gehen wir zu einer anderen Instanz über, in der wir bestimmen können, wie lange eine Funktion dauert, um einen Dekorateur zu nutzen.


Hier importieren wir die erforderlichen Header -Dateien, die Zeit und Mathematik enthalten. Die "Zeit" -Bibliothek ist für die Berechnung der "Zeit" verantwortlich und das "Mathematik" -Modul ist für alle mathematischen Operationen verantwortlich. Wir verwenden einen Dekorator, um die Dauer der Funktion zu berechnen. Wir definieren die Methode cal_time (). Diese Funktion enthält jede erforderliche Funktion als Parameter. Wir beschäftigen die innere 1 () -Funktion. Wir geben die *Args und ** Kwargs als Argumente der Funktion an. Im nächsten Schritt speichern wir die Dauer, bevor wir die Funktion implementieren. Wir nennen die mit dem "Zeit" -Modul verknüpfte Zeit () -Methode. Dann erwerben wir die Zeit nach der Ausführung der Methode. Wir verwenden erneut die Funktion Time () und ihr Wert wird in der Variablen „End“ gespeichert.

Die Print () -Methode wird angewendet, um die berechnete Zeit anzuzeigen. Jetzt berechnen wir das Faktor, damit wir die faktenorial () -Methode definieren. Wir übergeben die spezifische Zahl als Parameter. Wir setzen einen 3 -Sekunden -Wert für die Sleep () -Funktion, da es sehr wenig Zeit dauert, damit wir den tatsächlichen Unterschied bemerken können. Die Print () -Funktion wird verwendet, um die Faktorial der Nummer anzuzeigen. Am Ende rufen wir das Fakultät auf, indem wir die Anzahl angeben, die wir das Faktor berechnen möchten.

Abschluss

In diesem Leitfaden haben wir diskutiert, wie man einer Variablen eine Funktion zur Verfügung stellt, wie man Funktionen als Objekte behandelt, wie man Funktionen zurückgibt und wie man eine Funktion als Parameter für eine andere Funktion zur Verfügung stellt. Zusammen mit mehreren Fällen haben wir auch gezeigt, wie die Python -Dekorateure konstruieren und verwendet werden. Wir haben den Code implementiert, der die Dekorateure einsetzt, um das Verhalten einer Funktion zu ändern. Und in einer weiteren Abbildung haben wir einen Dekorateur verwendet, um festzustellen, wie lange eine Funktion zur Ausführung dauert.