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.
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()
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 kann
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()
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!