Ich bin kürzlich mit Python in Kontakt gekommen und habe das Konzept der Rückgabefunktion in Python gesehen. Ich war bisher nur dem Funktionsrückgabewert ausgesetzt. Beispielsweise kann Python int zurückgeben , str, list, dict usw. Geben Sie Daten ein. Was ich hier sagen möchte, ist, dass Python auch die Rückgabefunktion unterstützt.
Werfen wir zunächst einen Blick auf die grundlegende Syntax der Python-Unterstützung für die Rückgabefunktion
def f(): print 'call f()...' # 定义函数g: def g(): print 'call g()...' # 返回函数g: return g
. Implementieren wir die Summe der variablen Parameter. Normalerweise ist die Summationsfunktion wie folgt definiert:
def calc_sum(*args): ax = 0 for n in args: ax = ax + n return ax
Was aber, wenn die Summe nicht sofort berechnet werden muss, sondern nach Bedarf im nachfolgenden Code berechnet wird? Anstatt das Summationsergebnis zurückzugeben, können Sie die Summationsfunktion zurückgeben:
def lazy_sum(*args): def sum(): ax = 0 for n in args: ax = ax + n return ax return sum
Wenn wir lazy_sum() aufrufen, wird nicht das Summationsergebnis zurückgegeben, sondern die Summationsfunktion:
>>> f = lazy_sum(1, 3, 5, 7, 9) >>> f <function lazy_sum.<locals>.sum at 0x101c6ed90>
The Das Ergebnis der Summe wird tatsächlich berechnet, wenn Funktion f aufgerufen wird:
>>> f() 25
In diesem Beispiel definieren wir die Funktionssumme in der Funktion lazy_sum, und die interne Funktionssumme kann sich auf die Parameter der externen Funktion lazy_sum und beziehen Wenn lazy_sum die Funktionssumme zurückgibt, werden die relevanten Parameter und Variablen in der zurückgegebenen Funktion gespeichert. Diese Programmstruktur namens „Closure“ hat eine große Leistung.
Bitte beachten Sie noch etwas: Wenn wir lazy_sum() aufrufen, gibt jeder Aufruf eine neue Funktion zurück, auch wenn dieselben Parameter übergeben werden:
>>> f1 = lazy_sum(1, 3, 5, 7, 9) >>> f2 = lazy_sum(1, 3, 5, 7, 9) >>> f1==f2 False
f1() und f2() Die Aufrufergebnisse beeinflussen sich gegenseitig nicht.
Das obige ist der detaillierte Inhalt vonGeheimnisse über Python-Rückgabefunktionen und Rückgabewerte. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!