Ho il seguente codice Python che genera un elenco di funzioni anonime:Generazione di un elenco di funzioni in python
basis = [ (lambda x: n*x) for n in [0, 1, 2] ]
print basis[0](1)
mi sarei aspettato che fosse equivalente a
basis = [ (lambda x: 0*x), (lambda x: 1*x), (lambda x: 2*x) ]
print basis[0](1)
Tuttavia, mentre il secondo frammento stampa 0 che è quello che mi aspetterei, le prime stampe 2. Cosa c'è di sbagliato nel primo frammento di codice e perché non si comporta come previsto?
domanda relativa: http://stackoverflow.com/q/139819/4279 – jfs