Python Lambda in einer Schleife
Betrachtet man den folgenden Codeausschnitt:
# directorys == {'login': <object at ...>, 'home': <object at ...>}
for d in directorys:
self.command["cd " + d] = (lambda : self.root.change_directory(d))
Ich erwarte, ein Wörterbuch mit zwei Funktionen wie folgt zu erstellen:
# Expected :
self.command == {
"cd login": lambda: self.root.change_directory("login"),
"cd home": lambda: self.root.change_directory("home")
}
aber es sieht so aus, als ob die beiden erzeugten Lambda-Funktionen genau gleich sind:
# Result :
self.command == {
"cd login": lambda: self.root.change_directory("login"),
"cd home": lambda: self.root.change_directory("login") # <- Why login ?
}
Ich verstehe wirklich nicht warum. Hast du irgendwelche Vorschläge?