Điều gì đang xảy ra ở đây? Tôi đang cố gắng tạo danh sách các chức năng:Các vấn đề về Python Lambda
def f(a,b):
return a*b
funcs = []
for i in range(0,10):
funcs.append(lambda x:f(i,x))
Điều này không làm những gì tôi mong đợi. Tôi mong chờ danh sách để hành động như thế này:
funcs[3](3) = 9
funcs[0](5) = 0
Nhưng tất cả các chức năng trong danh sách dường như giống hệt nhau, và được thiết lập các giá trị cố định là 9:
funcs[3](3) = 27
funcs[3](1) = 9
funcs[2](6) = 54
Bất kỳ ý tưởng?
Điều đó phải là functools.partial (f, i) – FogleBird
Tôi đồng ý.Ứng dụng một phần là cách để đi đến đây. –
ở đây một phần (f, i) là viết tắt của một phần (f, b = i) không phải là một phần (f, a = i). vì vậy nó không giống với bài gốc. Ứng dụng chức năng một phần 'từ bên phải' (http://www.gossamer-threads.com/lists/python/dev/715103) đã bị từ chối hai lần. – sunqiang