J'essaie de créer des fonctions à l'intérieur d'une boucle :
functions = []
for i in range(3):
def f():
return i
# alternatively: f = lambda: i
functions.append(f)
Le problème est que toutes les fonctions finissent par être les mêmes. Au lieu de retourner 0, 1 et 2, les trois fonctions retournent 2 :
print([f() for f in functions])
# expected output: [0, 1, 2]
# actual output: [2, 2, 2]
Pourquoi cela se produit-il, et que dois-je faire pour obtenir 3 fonctions différentes qui sortent respectivement 0, 1 et 2 ?