Heim  >  Artikel  >  Backend-Entwicklung  >  Detaillierte Einführung in Python-Dekoratoren

Detaillierte Einführung in Python-Dekoratoren

王林
王林Original
2020-07-08 13:40:092766Durchsuche

Python Decorator ist eine Funktion, die dazu dient, die Funktionalität der ursprünglichen Funktion zu erweitern. Der Zweck besteht darin, der Funktion neue Funktionen hinzuzufügen, ohne den ursprünglichen Funktionsnamen (oder Klassennamen) zu ändern. Ein Dekorateur ist im Wesentlichen ein Abschluss, und der Abschluss ist der Kern eines Dekorateurs.

Detaillierte Einführung in Python-Dekoratoren

Definition

(empfohlenes Tutorial: Python-Tutorial)

Python-Dekoratoren (funktionale Dekoratoren) ist eine Funktion zur Erweiterung der Funktionalität der ursprünglichen Funktion. Der Zweck besteht darin, der Funktion neue Funktionen hinzuzufügen, ohne den ursprünglichen Funktionsnamen (oder Klassennamen) zu ändern.

Das Besondere an dieser Funktion ist, dass ihr Rückgabewert auch eine Funktion ist, in die die „ursprüngliche“ Funktion eingebettet ist

Tatsächlich ist der Dekorator ein Abschluss, der eine Funktion als Parameter annimmt und eine alternative Funktion zurückgibt. Der Abschluss ist der Kern des Dekorators. Erklären Sie kurz die Eigenschaften des Abschlusses:

Eine von einer Funktion zurückgegebene Funktion . Wenn dieses Funktionsobjekt ausgeführt wird, ist der tatsächliche Inhalt der Funktion wie folgt:

1 >

2. Externe Parameter, die das Funktionsobjekt benötigt, um Variablen und Variablenwerte zu verwenden.

Das Obige ist ein Abschluss, der in einer Funktion verschachtelt sein muss und ein Funktionsobjekt zurückgeben muss, das externe Variablen aufruft ein Abschluss sein.

Beispiel:

#encoding=utf-8
import time
def now():
    print "current time is %s" %time.strftime("%Y-%m-%d %H-%M-%S")
res=now
res()

Ergebnis:

Wenn wir nun einige andere Funktionen zum Jetzt hinzufügen möchten( )-Funktion, wie zum Beispiel das automatische Drucken einiger Protokolle vor und nach dem Aufruf der Funktion, aber wir möchten die ursprüngliche Definition von now() nicht ändern, daher ist unser Dekorator praktisch.

Im Wesentlichen ist der Dekorator ein Funktion höherer Ordnung, die eine Funktion zurückgibt, daher müssen wir ein Protokoll definieren, das gedruckt werden kannDetaillierte Einführung in Python-Dekoratoren

Nach Python 2.4 wird die Verwendung des Bezeichners @ unterstützt, um den Dekorator auf die Funktion anzuwenden Sie müssen nur @ und den Namen des Dekorateurs vor der Definition der Funktion hinzufügen

Code:

#encoding=utf-8
import time
#定义装饰器
def log(func):
    def wrapper(*args,**kw):
        print "call func is %s" %func.__name__
        return func(*args,**kw)
    return wrapper

@log
def now():
    now = time.strftime("%Y-%m-%d %H-%M-%S")
    print "current time is %s" %now

now()

Ergebnis:

Das obige ist der detaillierte Inhalt vonDetaillierte Einführung in Python-Dekoratoren. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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