Heim >Backend-Entwicklung >Python-Tutorial >Wie erfasst man Variablen in Lambda-Funktionen ordnungsgemäß in Schleifen?
Variablen in Lambda-Funktionen erfassen
Bei der Verwendung von Lambda-Funktionen innerhalb einer Schleife ist es wichtig, ihren Variablenbereich zu verstehen. Im Gegensatz zu regulären Funktionen, die lokale Variablen kopieren, verweisen Lambda-Funktionen auf diese.
Bedenken Sie den angegebenen Code:
<code class="python">for m in ('do', 're', 'mi'): funcList.append(lambda: callback(m))</code>
Hier erfasst die Lambda-Funktion den Wert von m aus dem umschließenden Bereich. Nach Abschluss der Schleife behält m jedoch den letzten Wert („mi“) bei. Wenn jede Lambda-Funktion aufgerufen wird, verweist sie auf diese gemeinsam genutzte m-Variable, was zur Ausgabe „mi“ mehrmals führt.
Um dieses Problem zu lösen und sicherzustellen, dass jedes Lambda einen eindeutigen Wert von m erfasst, verwenden Sie eine Technik namens „ Standardargumente":
<code class="python">for m in ('do', 're', 'mi'): funcList.append(lambda m=m: callback(m))</code>
Indem m zu einem Standardparameter mit demselben Namen gemacht wird, erfasst jedes Lambda seine eigene Instanz der Variablen und stellt so die erwartete Ausgabe sicher:
"do"
„re“
„mi“
Das obige ist der detaillierte Inhalt vonWie erfasst man Variablen in Lambda-Funktionen ordnungsgemäß in Schleifen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!