Problème sur le remplissage d'une liste avec des lambdas
Bonjour,
je débute en Python, et je me suis retrouvé face à un problème que je ne comprends pas:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| def __BuildPMain(self, k):
# produit un résultat inattendu !
#s = []
#for i in range(4):
# s += [lambda x : k.SetMainDummy(i, int(x))]
# pas mieux... identique à l'essai précédent
#s = [None, None, None, None]
#for i in range(4):
# s[i] = lambda x : k.SetMainDummy(i, int(x))
# enfin, cela fonctionne correctement, mais pourquoi ???
s =[lambda x : k.SetMainDummy(0, int(x)),
lambda x : k.SetMainDummy(1, int(x)),
lambda x : k.SetMainDummy(2, int(x)),
lambda x : k.SetMainDummy(3, int(x))]
return s |
Plus précisément, avec les 2 premières solutions, les appels de s[n], quel que soit n, se comportent tous comme s[3], alors que si je remplis s manuellement, on a bien des s[0] ... s[3] différents 8O
Quelqu'un a une idée ?
Merci ;)