今天看到一段程序中有用到lambda函數,其實很簡單 key=lambda (l,s):s
猜我犯了個什么錯誤?
自己把(l,s)理解成lambda的2個形參了,是蠻容易這樣理解的哈,畢竟以前函數都是 def f(1,s):這樣的
然后自己調用時老提示錯誤,參數錯誤,於是就看了下官方文檔才知道lmbda參數其實是這樣的
lambda x,y:x+y
x,y是它的2個形參,所以這里 lambda (l,s)其實就只有一個參數,那就是一個tuple類型的參數,
所以調用時就是key((x,y))
這個錯誤是很容易犯啊;)
>>> key=lambda(1,s):s SyntaxError: invalid syntax >>> key=lambda(l,s) SyntaxError: invalid syntax >>> key=lambda(l,s):s >>> key <function <lambda> at 0x02A81CF0> >>> key(1,2) Traceback (most recent call last): File "<pyshell#6>", line 1, in <module> key(1,2) TypeError: <lambda>() takes exactly 1 argument (2 given) >>> key(1) Traceback (most recent call last): File "<pyshell#7>", line 1, in <module> key(1) File "<pyshell#4>", line 1, in <lambda> key=lambda(l,s):s TypeError: 'int' object is not iterable >>> key([1,2,3,4,5]) Traceback (most recent call last): File "<pyshell#8>", line 1, in <module> key([1,2,3,4,5]) File "<pyshell#4>", line 1, in <lambda> key=lambda(l,s):s ValueError: too many values to unpack >>> key([1]) Traceback (most recent call last): File "<pyshell#9>", line 1, in <module> key([1]) File "<pyshell#4>", line 1, in <lambda> key=lambda(l,s):s ValueError: need more than 1 value to unpack >>> key([]) Traceback (most recent call last): File "<pyshell#10>", line 1, in <module> key([]) File "<pyshell#4>", line 1, in <lambda> key=lambda(l,s):s ValueError: need more than 0 values to unpack >>> key([],1) Traceback (most recent call last): File "<pyshell#11>", line 1, in <module> key([],1) TypeError: <lambda>() takes exactly 1 argument (2 given) >>> x=lambda(x,y):x+y >>> x(1,2) Traceback (most recent call last): File "<pyshell#13>", line 1, in <module> x(1,2) TypeError: <lambda>() takes exactly 1 argument (2 given) >>> x(1) Traceback (most recent call last): File "<pyshell#14>", line 1, in <module> x(1) File "<pyshell#12>", line 1, in <lambda> x=lambda(x,y):x+y TypeError: 'int' object is not iterable >>> x=lambda(x):x+1 >>> x(111) 112 >>> key=lambda x,y:x+y >>> key(1,2) 3 >>> key=lambda (1,s):s SyntaxError: invalid syntax >>> key=lambda (l,s):s >>> key((1,2)) 2