lambda參數寫法問題


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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM