Tại sao nỗ lực tạo danh sách các hàm đã kết thúc này không hoạt động?Điều gì đang xảy ra với biểu thức lambda trong hàm python này?
def p(x, num):
print x, num
def test():
a = []
for i in range(10):
a.append(lambda x: p (i, x))
return a
>>> myList = test()
>>> test[0]('test')
9 test
>>> test[5]('test')
9 test
>>> test[9]('test')
9 test
Điều gì đang xảy ra ở đây?
Một chức năng mà thực sự làm những gì tôi mong đợi các chức năng trên để làm là:
import functools
def test2():
a = []
for i in range (10):
a.append(functools.partial(p, i))
return a
>>> a[0]('test')
0 test
>>> a[5]('test')
5 test
>>> a[9]('test')
9 test
Vì bạn có một giải pháp sử dụng functools.partial, câu hỏi là gì? –
Câu hỏi đặt ra là, tại sao phương pháp đầu tiên không hoạt động? – David