thể trùng lặp:
What do (lambda) function closures capture in Python?
lambda function don't closure the parameter in Python?Tạo lambda bên trong một vòng lặp
tôi đang cố gắng để tạo ra lambdas bên trong một vòng lặp đó lặp trên một danh sách các đối tượng:
lambdas_list = []
for obj in obj_list:
lambdas_list.append(lambda : obj.some_var)
Bây giờ, nếu tôi lặp lại qua lambdas và gọi cho họ như sau:
for f in lambdas_list:
print f()
Tôi nhận được cùng một giá trị. Đó là giá trị của số obj
cuối cùng trong obj_list
vì đó là biến cuối cùng trong khối của trình vòng lặp danh sách. Bất kỳ ý tưởng fn một tốt (pythonic) viết lại của mã để làm cho nó hoạt động?
xem http://stackoverflow.com/questions/2295290/what-do-lambda-function-closures-capture-in-python/2295372#2295372 và http://stackoverflow.com/questions/7514093/lambda -function-dont-closure-the-parameter-in-python. –
câu trả lời mô tả nhất: http://stackoverflow.com/questions/938429/scope-of-python-lambda-functions-and-their-parameters/938493#938493 –