Python Lambda in einer Schleife

Unter Berücksichtigung der folgenden code-snippet :

# directorys == {'login': <object at ...>, 'home': <object at ...>}
for d in directorys:
    self.command["cd " + d] = (lambda : self.root.change_directory(d))

Ich erwarten, erstellen Sie ein Wörterbuch für zwei-Funktion wie folgt :

# Expected :
self.command == {
    "cd login": lambda: self.root.change_directory("login"),
    "cd home": lambda: self.root.change_directory("home")
}

aber es sieht aus wie die beiden lambda-Funktion erzeugt werden, sind genau die gleichen :

# 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. Haben Sie irgendwelche Vorschläge ?

InformationsquelleAutor FunkySayu | 2013-11-07

Schreibe einen Kommentar