Ich versuche, Funktionen innerhalb einer Schleife zu erstellen:
Code: Select all
functions = []
for i in range(3):
def f():
return i
functions.append(f)
Alternativ mit Lambda:
Code: Select all
functions = []
for i in range(3):
functions.append(lambda: i)
Das
Problem besteht darin, dass am Ende alle Funktionen gleich sind. Anstatt 0, 1 und 2 zurückzugeben, geben alle drei Funktionen 2 zurück:
- Erwartete Ausgabe: [0, 1, 2]
- Tatsächliche Ausgabe: [2, 2, 2]
Warum passiert das und was muss ich tun, um 3 verschiedene Funktionen zu erhalten, die jeweils 0, 1 und 2 ausgeben?