今天看到一段程序中有用到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
