Powiel możliwe:
What do (lambda) function closures capture in Python?
lambda function don't closure the parameter in Python?Tworzenie lambda wewnątrz pętli
próbuję tworzyć lambdy wewnątrz pętli, która wykonuje iteracje nad listą obiektów:
lambdas_list = []
for obj in obj_list:
lambdas_list.append(lambda : obj.some_var)
Teraz, jeśli przejdę przez lambdas listę i wywołaj je w ten sposób:
for f in lambdas_list:
print f()
Otrzymuję tę samą wartość. Jest to wartość ostatniego obj
w obj_list
, ponieważ była to ostatnia zmienna w bloku iteratora listy. Jakieś pomysły na dobre (pythonic) przepisanie kodu, aby działało?
patrz http://stackoverflow.com/questions/2295290/what-do-lambda-function-closure-capture-in-python/2295372#2295372 i http://stackoverflow.com/questions/7514093/lambda -funkcja-dont-zamknięcie-parametr-w-python. –
Najbardziej opisowa odpowiedź: http://stackoverflow.com/questions/938429/scope-of-python-lambda-functions-and-their-parameters/938493#938493 –