Python lambda não lembra de argumento em loop [duplicate]
Duplicata Possível:
Use o valor da variável na expressão lambda
Eu estou trabalhando com python e tentando isolar um problema que tive com funções lambda.
Do código a seguir, eu esperava criar duas funções lambda, cada uma obtendo um x diferente, e a saída deveria ser
1 2
mas a saída é 2 2
Por quê? E como posso fazer duas funções diferentes? Usando def?
def main():
d = {}
for x in [1,2]:
d[x] = lambda : print(x)
d[1]()
d[2]()
if __name__ == '__main__':
main()