Tôi đã mã python sau đó tạo ra một danh sách các hàm nặc danh:Tạo một danh sách các chức năng trong python
basis = [ (lambda x: n*x) for n in [0, 1, 2] ]
print basis[0](1)
tôi lại có thể ngờ nó là tương đương với
basis = [ (lambda x: 0*x), (lambda x: 1*x), (lambda x: 2*x) ]
print basis[0](1)
Tuy nhiên, trong khi đoạn thứ hai in ra 0 đó là những gì tôi mong đợi, các bản in đầu tiên 2. Có gì sai với đoạn mã đầu tiên, và tại sao nó không hoạt động như mong đợi?
câu hỏi liên quan: http://stackoverflow.com/q/139819/4279 – jfs