Heim >Backend-Entwicklung >Python-Tutorial >Warum verweisen in Schleifen erstellte Lambdas auf das letzte Objekt?
Anpassen der Lambda-Erstellung innerhalb von Schleifen
Wenn Sie mit Listen von Objekten arbeiten und versuchen, Lambdas innerhalb einer Schleife zu erstellen, die auf Objektattribute zugreifen, können Sie dies tun Es tritt ein Problem auf, bei dem alle Lambdas auf das letzte Objekt in der Liste verweisen.
Um dieses Problem zu beheben, besteht der Schlüssel darin, für jedes die richtige Objektreferenz zu erfassen Lambda. Der folgende Codeausschnitt bietet eine verbesserte Lösung:
lambdas_list = [] for obj in obj_list: lambdas_list.append(lambda obj=obj: obj.some_var)
Indem Sie obj=obj als Schlüsselwortargument in der Lambda-Funktion festlegen, erstellen Sie innerhalb jeder Iteration einen neuen Bereich für obj. Dadurch wird sichergestellt, dass jedes Lambda die richtige Objektreferenz erfasst und diese von Änderungen in nachfolgenden Schleifeniterationen isoliert.
Wenn Sie also über die lambdas_list iterieren und jede Funktion aufrufen, erhalten Sie die erwarteten Ergebnisse für jedes Objekt in der obj_list. Diese Methode behebt effektiv das Problem, dass alle Lambdas auf das letzte Objekt in der Liste verweisen, und bietet eine robustere und pythonischere Lösung.
Das obige ist der detaillierte Inhalt vonWarum verweisen in Schleifen erstellte Lambdas auf das letzte Objekt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!