Heim  >  Artikel  >  Backend-Entwicklung  >  Geheimnisse über Python-Rückgabefunktionen und Rückgabewerte

Geheimnisse über Python-Rückgabefunktionen und Rückgabewerte

Tomorin
TomorinOriginal
2018-08-17 17:53:351654Durchsuche

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!

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