Lambdas innerhalb von Schleifen: Gemeinsamen Zustand ansprechen
In Python können innerhalb einer Schleife erstellte Lambdas aufgrund des gemeinsamen Zustands unerwartetes Verhalten zeigen. Betrachten Sie als Beispiel den folgenden Code, der darauf abzielt, Lambdas zu erstellen, die auf die Eigenschaft eines Objekts zugreifen:
lambdas_list = [] for obj in obj_list: lambdas_list.append(lambda : obj.some_var)
Beim Durchlaufen und Aufrufen dieser Lambdas wird jedoch immer der Eigenschaftswert des letzten Objekts erhalten:
for f in lambdas_list: print(f())
Um diese Einschränkung zu beheben, kann eine einfache Änderung vorgenommen werden:
lambdas_list.append(lambda obj=obj: obj.some_var)
Durch die Bereitstellung eines Standardarguments für das Lambda wird der aktuelle Wert des Objekts zum Zeitpunkt der Erstellung erfasst. Dadurch wird sichergestellt, dass jedes Lambda seinen eigenen Zustand beibehält und die gewünschten Ergebnisse erzielt werden:
for f in lambdas_list: print(f())
Das obige ist der detaillierte Inhalt vonWarum teilen sich Lambdas innerhalb von Schleifen in Python den Status?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!