Ich habe Probleme damit, lambdas zu arbeiten. Der Code hier ist ein Beispiel, aber es zeigt mein Problem gut.Warum funktionieren meine Lambdas nicht?
lambdas = list()
for i in range(5):
lambdas.append(lambda x:i*i*x)
print lambdas[0](1)
print lambdas[2](1)
Das gibt mir 16, aber ich erwarte unterschiedliche Werte für verschiedene Lambda. Warum passiert?
"Scope in Python ist lexikalisch. Eine Schließung wird immer den Namen und den Umfang der Variablen merken, nicht das Objekt, auf das sie zeigt." http://stackoverflow.com/questions/2295290/what-do-lambda-funktion-closures-capture-in-python Ihr Lambda erfasst den Namen "i", nicht den Objektwert *, auf den "i" verweist. – Shashank