Python函式 3 關於lambda

2021-07-26 11:00:17 字數 1504 閱讀 1711

一、lambda函式

1、lambda函式基礎:

lambda函式也叫匿名函式,即,函式沒有具體的名稱,而用def建立的方法是有名稱的。如下:

"""

命名的foo函式

"""def foo():return

'beginman'#

python中單行引數可以和標題寫在一行

"""

lambda關鍵字建立匿名函式,該表示式同以上函式

"""lambda:'

beginman

'

上面的只是簡單的用lambda建立乙個函式物件,並沒有儲存它也沒有呼叫它,時刻會被**了。這裡我們儲存並呼叫:

bar = lambda:'

beginman

'print bar() #

beginman

從上面幾個例子中,可易理解python lambda語法:

lambda [arg1[,arg2,arg3....argn]]:expression
lambda語句中,冒號前是引數,可以有多個,用逗號隔開,冒號右邊的返回值。lambda語句構建的其實是乙個函式物件。

print

lambda:'

beginman'#

at 0x00b00a30>

2、無引數

如果沒有引數,則lambda冒號前面就沒有,如以上例子。

3、有引數

def add(x,y):return x+y

add2 = lambda x,y:x+y

print add2(1,2) #

3def sum(x,y=10):return x+y

sum2 = lambda x,y=10:x+y

print sum2(1) #

11print sum2(1,100) #

101

二、lambda與def

上面的例子中,可知lambda函式只是建立簡單的函式物件,是乙個函式的單行版本,但是這種語句由於效能的原因,呼叫的時候繞過函式的棧分配。python lambda還有哪些和def不一樣呢?

1 、python lambda會建立乙個函式物件,但不會把這個函式物件賦給乙個識別符號,而def則會把函式物件賦值給乙個變數。

如:

>>> def foo():return

'foo()

'>>>foo

2、python lambda它只是乙個表示式,而def則是乙個語句。lambda表示式執行起來像乙個函式,當被呼叫時建立乙個框架物件。

三、lambda函式的用途

個人認為有以下:

1、對於單行函式,使用lambda可以省去定義函式的過程,讓**更加精簡。

2、在非多次呼叫的函式的情況下,lambda表示式即用既得,提高效能

注意:如果for..in..if能做的,最好不要選擇lambda

四、參考

C 委託,delegate,匿名函式和lambda

1委託就是可以把方法當作引數傳遞 2可以把委託看作乙個類來使用 3委託使用前需要例項化 using system using system.collections.generic using system.linq using system.text private void button1 cli...

Python 基本資料型別基礎實戰 Lambda

reference reference python程式設計基礎 第2版 lambda效率不及operator 冒號前是輸入引數,冒號後是返回值 add lambda x,y x y print add 2,5 g lambda x,y 2,z 6 x y z print g 10 wrong ex...

python3 關於日期的函式使用記錄

datetime類的timedalte 表示兩個時間的差值 datetime.timedelta days 0,seconds 0,microseconds 0,milliseconds 0,minutes 0,hours 0,weeks 0 均為可選引數。舉例 startdate 為某月1號 ne...