Eventuali duplicati:
What do (lambda) function closures capture in Python?
lambda function don't closure the parameter in Python?Creazione lambda all'interno di un ciclo
Sto cercando di creare lambda all'interno di un ciclo che itera su un elenco di oggetti:
lambdas_list = []
for obj in obj_list:
lambdas_list.append(lambda : obj.some_var)
Ora, se iterare sopra i lambda elencarli e chiamarli in questo modo:
for f in lambdas_list:
print f()
Ottengo lo stesso valore. Questo è il valore dell'ultimo obj
in obj_list
poiché quella era l'ultima variabile nel blocco dell'iteratore di elenco. Qualche idea per una buona (pitonica) riscrittura del codice per farlo funzionare?
vedere http://stackoverflow.com/questions/2295290/what-do-lambda-function-closures-capture-in-python/2295372#2295372 e http://stackoverflow.com/questions/7514093/lambda -funzione-dont-chiusura-la-parametro-in-python. –
risposta più descrittiva: http://stackoverflow.com/questions/938429/scope-of-python-lambda-functions-and-their-parameters/938493#938493 –