Heim >Backend-Entwicklung >Python-Tutorial >Geheimnisse über Python-Rückgabefunktionen und Rückgabewerte
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!