Dekoratoren sind sehr nützliche Werkzeuge in Python. Ein Dekorator ist eine Funktion, die eine andere Funktion als Parameter verwendet und deren Funktionalität erweitert, ohne sie explizit zu ändern. Es ermöglicht uns, das Verhalten einer Funktion oder Klasse zu ändern, ohne deren Quellcode zu berühren.
Mit anderen Worten: Ein Dekorateur umschließt eine Funktion, um ihr Verhalten zu erweitern, anstatt sie dauerhaft zu ändern.
Ab diesem Artikel wollen wir untersuchen, was Dekoratoren sind und wie sie in Python funktionieren.
1.1 Über Funktionen
Um zu verstehen, wie Dekoratoren funktionieren, müssen wir einige wichtige Konzepte zu Funktionen in Python überprüfen. Beachten Sie immer, dass Funktionen in Python erstklassige Bürger sind. Beachten Sie daher die folgenden Konzepte:
ü Funktionen können regulären Variablen zugewiesen werden. - ü Funktionen können als Parameter an andere Funktionen übergeben werden Funktionen können Funktionen zurückgeben.
- ü Der Funktionskörper kann andere Funktionen (interne Funktionen) enthalten.
-
- Schauen wir uns Funktionsbeispiele zu diesen Punkten an.
1.1.1 Beispiel 1: Einer regulären Variablen einen Wert zuweisen
# 把函数赋值给常规变量:
# 定义简单函数
def sayHi(name:str):
return "Hi " + name + "."
#应用:函数赋值给变量
hi = sayHi
print(hi("Solo Cui"))
#输出结果
Hi Solo Cui.
Nach dem Login kopieren
Im Code definieren wir die Funktion als sayHi. Weisen Sie diese Funktion dann einer lokalen Variablen namens hi zu. Auch diese Variable hi ist eine Funktion – in diesem Fall kann die zugewiesene Variable als Alias für die Funktion betrachtet werden. Der nächste Schritt besteht darin, die Variable hi als Funktion aufzurufen: hi("Solo Cui"). 1.1.2 Beispiel 2: Funktion als Parameter übergeben
Die Codeliste lautet wie folgt:
# 函数作为参数传递
def printHello(name):
print("Hello,", name)
# 把函数作为参数的函数
def hiWithFunction(func, xname):
func(xname)
#调用以函数为参数的函数
hiWithFunction(printHello,'上官婉儿')
Nach dem Login kopieren
Der Code ist leicht zu verstehen: Es sind zwei Funktionen definiert, eine Funktion kann Funktionsparameter empfangen und die andere Funktion wird als Parameter übergeben. Funktionen, die Funktionsparameter empfangen können
1.1.3 Beispiel 3: Funktionen, die Funktionen zurückgeben
Die Codeliste lautet wie folgt:
#示例3:返回函数的函数
def returnXFunction():
return sayHi #示例1中定义的函数,可自行定义其它函数
# 调用函数
xHi = returnXFunction()
print(xHi("BirdMan"))
Nach dem Login kopieren
Eine einfache Funktion, die eine andere Funktion zurückgibt, wird hier definiert ist, returnXFunction(), call Diese Funktion weist den zurückgegebenen Wert einer Variablen xHi zu, und dann kann die Funktion der zurückgegebenen Funktion basierend auf dem Variablennamen xHi ausgeführt werden.
1.1.4 Beispiel 4: Integrierte Funktion im Funktionskörper
Das heißt, eine Funktion innerhalb eines Funktionskörpers definieren. Bitte schauen Sie sich den Code an:
# 示例4:函数体内不含税
def outerXFunction(msg):
'''外部函数'''
#代码...
#定义内嵌函数
def innerXFunc():
'''内部函数'''
print(msg,'来自内嵌函数.')
#函数体内调用内嵌函数
innerXFunc()
#调用外部函数
outerXFunction("火麒麟")
Nach dem Login kopieren
Ich habe eine innerXFunc-Funktion innerhalb der Funktion OuterXFunction definiert und die eingebettete Funktion innerhalb des äußeren Funktionskörpers aufgerufen, sodass beim Aufruf der externen Funktion die eingebettete Funktion ausgeführt wird.
Wie im Code gezeigt, übergeben Sie beim Aufruf der externen Funktion die Zeichenfolge „Fire Qilin“ an den Parameter msg. Die Ausgabe „Fire Qilin kommt von der eingebetteten Funktion“ wird durch die selbst eingebettete Funktion vervollständigt. Hierbei ist zu beachten, dass die von innerXFunc verwendete Variable msg nicht in ihrem eigenen Funktionskörper definiert ist. Mit anderen Worten: Sie verwendet die Variable aus ihrem übergeordneten Bereich – dies ist das Konzept des Abschlusses in Python.
Ein kurzes Wort zu Python-Abschlüssen: Ein Abschluss ist ein Funktionsobjekt, das sich den Wert im Gültigkeitsbereich des übergeordneten Objekts merkt und zum Erstellen einer Zuordnung zwischen einer Funktion und einer Reihe „privater“ Variablen verwendet werden kann. Diese privaten Variablen behalten ihre Persistenz über mehrere Aufrufe einer bestimmten Funktion hinweg bei.
Das obige ist der detaillierte Inhalt vonPython-Programmierung: Neues Verständnis dekoratorbezogener Funktionen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!