Python-Funktionsprogrammierung: Rückgabefunktionen und anonyme Funktionen

WBOY
Freigeben: 2023-04-12 14:37:20
nach vorne
1293 Leute haben es durchsucht

Python-Funktionsprogrammierung: Rückgabefunktionen und anonyme Funktionen


Rückgabefunktion

Die sogenannte Rückgabefunktion besteht, wie der Name schon sagt, darin, die Funktion als Rückgabewert zu verwenden. Neben der Annahme von Funktionen als Parameter können Funktionen höherer Ordnung auch Funktionen als Ergebnisse zurückgeben. Lassen Sie uns eine kontinuierliche Multiplikation variabler Parameter implementieren. Die Quadraturfunktion kann wie folgt definiert werden:

def calc_fac(*args):
fx = 0
for n in args:
fx = fx * n
return fx
Nach dem Login kopieren

Wenn die Quadraturfunktion definiert ist, müssen wir sie oft nicht sofort multiplizieren, sondern rufen sie basierend auf nachfolgenden Berechnungen auf. Zu diesem Zeitpunkt können wir nicht das Ergebnis der Funktion zurückgeben, sondern die Funktion selbst, wie unten gezeigt:

def lazy_fac(*args):
 def fac():
 fx = 0
 for n in args:
 fx = fx * n
 return fx
return fac
Nach dem Login kopieren

Nach der Neudefinition der Quadraturfunktion wird beim Aufruf von lazy_fac() nicht das Ergebnis der Quadratur zurückgegeben . , aber die Quadraturfunktion:

>>> a=lazy_fac(1,2,3,4)
>>> a
<function lazy_fac.<locals>.fac at 0x002a5dr42>
Nach dem Login kopieren

Und wenn Funktion a aufgerufen wird, wird der Quadraturprozess ausgeführt:

>>> a()
24
Nach dem Login kopieren

In diesem Beispiel definieren wir die Funktion fac in der Funktion lazy_fac, und fac kann als interne Funktion bezeichnet werden, und lazy_fac ist eine externe Funktion. Die interne Funktion fac kann auf die Parameter und lokalen Variablen der externen Funktion verweisen. Parameter und Variablen werden in der inneren Funktion gespeichert, die wir schließlich zurückgeben. Diese Programmstruktur wird in Python als Abschluss bezeichnet.

Wenn in der Abschlussstruktur die Funktion als Ergebnis zurückkehrt, wird der Funktionsprozess nicht sofort ausgeführt, sondern nach dem Aufruf von a ().

Kurz gesagt: Bei der funktionalen Programmierung kann eine Funktion nicht nur ein Berechnungsergebnis zurückgeben, sondern auch eine nicht ausgeführte Funktion. Denken Sie bei der Rückgabe einer Funktion immer daran, dass die Funktion nicht ausgeführt wurde, und versuchen Sie, keine Variablen wie Schleifenvariablen einzuführen, die zu Änderungen in der zurückgegebenen Funktion führen könnten.

Anonyme Funktion

Wenn wir eine Funktion übergeben oder die Codestruktur zu komplex ist, können wir anonyme Funktionen anstelle expliziter Funktionsdefinitionen verwenden. Zu diesem Zeitpunkt werden anonyme Funktionen die Codestruktur erheblich vereinfachen und verfeinern.

Nehmen Sie die zuvor eingeführte Kartenfunktion als Beispiel, um x3 zu berechnen. Schauen Sie sich die Funktion der anonymen Funktion an:

>>> list(map(lambda x: x * x * x, [1, 2, 3]))
[1, 8, 27]
Nach dem Login kopieren

Wie aus dem Vergleich hervorgeht, ist die anonyme Funktion Lambda x: x*x*x Äquivalent zu:

def f(x):
 return x * x * x
Nach dem Login kopieren

lambda als anonymes Funktionsschlüsselwort, das x vor dem Doppelpunkt gibt die Parameter der anonymen Funktion an. Anonyme Funktionen können nur einen Ausdruck haben und es ist nicht erforderlich, eine Rückgabe wie bei der Definition einer Funktion zu schreiben. Da anonyme Funktionen keine Funktionsnamen haben, müssen Sie sich bei der Verwendung keine Sorgen über Funktionsnamenkonflikte machen. Als Funktionsobjekt entspricht die anonyme Funktion auch den Regeln für die Zuweisung von Werten an Variablen:

>>> fx = lambda x: x * x * x
>>> fx
<function <lambda> at 0x101c6ef28>
>>> f(4)
64
Nach dem Login kopieren

Ebenso kann die anonyme Funktion als Funktion auch als Rückgabefunktion verwendet werden:

def f(x):
 return lambda: x * x * x
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonPython-Funktionsprogrammierung: Rückgabefunktionen und anonyme Funktionen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:51cto.com
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage