Heim  >  Artikel  >  Backend-Entwicklung  >  Python-Funktionsprogrammierung: Rückgabefunktionen und anonyme Funktionen

Python-Funktionsprogrammierung: Rückgabefunktionen und anonyme Funktionen

WBOY
WBOYnach vorne
2023-04-12 14:37:201309Durchsuche

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

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

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

>>> a()
24

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]

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

def f(x):
 return x * x * x

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

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

def f(x):
 return lambda: x * x * x

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:51cto.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen