今天看到一段程式中有用到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):ssyntaxerror: invalid syntax
>>> key=lambda(l,s)
syntaxerror: invalid syntax
>>> key=lambda(l,s):s
>>> key
at 0x02a81cf0>
>>> key(1,2)
traceback (most recent call last):
file "", line 1, in key(1,2)
typeerror: () takes exactly 1 argument (2 given)
>>> key(1)
traceback (most recent call last):
file "", line 1, in key(1)
file "", line 1, in key=lambda(l,s):s
typeerror: 'int' object is not iterable
>>> key([1,2,3,4,5])
traceback (most recent call last):
file "", line 1, in key([1,2,3,4,5])
file "", line 1, in key=lambda(l,s):s
valueerror: too many values to unpack
>>> key([1])
traceback (most recent call last):
file "", line 1, in key([1])
file "", line 1, in key=lambda(l,s):s
valueerror: need more than 1 value to unpack
>>> key()
traceback (most recent call last):
file "", line 1, in key()
file "", line 1, in key=lambda(l,s):s
valueerror: need more than 0 values to unpack
>>> key(,1)
traceback (most recent call last):
file "", line 1, in key(,1)
typeerror: () takes exactly 1 argument (2 given)
>>> x=lambda(x,y):x+y
>>> x(1,2)
traceback (most recent call last):
file "", line 1, in x(1,2)
typeerror: () takes exactly 1 argument (2 given)
>>> x(1)
traceback (most recent call last):
file "", line 1, in x(1)
file "", line 1, in 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
lambda函式表示式寫法
c 11提供了對匿名函式的支援,稱為lambda函式 也叫lambda表示式 lambda表示式具體形式如下 capture parameters return type 如果沒有引數,空的圓括號 可以省略.返回值也可以省略,如果函式體只由一條return語句組成或返回型別為void的話.形如 ca...
有引數返回的Lambda
主要看 的注釋 1 public static void main string args 19 20 匿名內部類設定排序 21 乙個是傳入的需要排序的物件 22 乙個是重寫comparator 的 public int compare person o1,person o2 23 修改return...
Java程式設計 可變引數寫法
當你在做專案時,有乙個計算傳入引數的和,但引數多少不確定,面對這樣的情況要如何解決呢?可變引數的寫法請參考下面的例子 package com.ycao.argstest public class varargs 另外一種傳參方式,說明這種傳參方法本質就是陣列 型別後面加三個點即 說明這個方法的引數不...