lambda 函數也叫匿名函數,即,函數沒有具體的名稱,而用def創建的方法是有名稱的.
python 允許用lambda關鍵字創造匿名函數,匿名是因爲不需要以標準的方式來聲明,比如,使用def語句,
但是作爲函數,它們也能有參數,一個完整的lambda語句代表一個表達式,這個表達式的定義體必須和聲明放
在同一行.
##python中單行參數可以和標題寫在一行. 如: def fun():return 'hello'
而此處 lambda 函數只能寫一行
語法: lambda [arg1[,arg2,arg3...argN]]:expression
lambda 語句中,冒號前是參數,可以有多個,用逗號隔開,冒號右邊的返回值(返回值可以是表達式).
lambda 語句構建的其實是一個函數對象
<沒有參數>
冒號前沒有 如: lambda:"hello"
調用: print lambda:"hello"
或者: a = lambda:"hello"
print a
冒號前有 如: lambda x,y : x+y
調用 print lambda x=1,y=1 : x+y
或者: a = lambda x,y : x+y
print a(1,1)
默認參數: b = lambda x,y=1 : x+y
print b(1),b(1,2)
參數爲元組: c = lambda *x: x
print c('hello','world',1,2)
lambda 函數只是創建簡單的函數對象是一個函數的單行版本,調用的時候繞過函數的棧分配
1>lambda 會創建一個函數對象,但是不會把這個對象賦給標示符,而是靠標示符去引用他,
而def會把函數對象賦值給一個變量.
>>> a = lambda x,y:x+y
>>> a
<function <lambda> at 0x7ff9ab557938>
>>> def b():return 11
>>> b
<function b at 0x7ff9ab5579b0>
2>lambda 只是一個表達式,而def是一個語句塊.lambda 被調用時創建一個框架對象