Python匿名函數

Python匿名函數

定義:

匿名函數指一類無須定義標識符的函數或子程序。Python用lambda語法定義匿名函數,只需用表達式而無需申明。

lambda語法的定義如下:

lambda [arg1 [,arg2, ... argN]] : expression

除了沒有函數名,其語法與如下函數的定義相同。

匿名函數特點:

1.不用取名稱,因為給函數取名是比較頭疼的一件事,特別是函數比較多的時候

2.可以直接在使用的地方定義,如果需要修改,直接找到修改即可,方便以後代碼的維護工作

3.語法結構簡單,不用使用def 函數名(參數名):這種方式定義,直接使用lambda 參數:返回值 定義即可

lambda這個名稱來自於LISP,而LISP則是從lambda calculus(一種符號邏輯形式)取這個名稱的。在Python中,lambda作為一個關鍵字,作為引入表達式的語法。想比較def函數,lambda是單一的表達式,而不是語句塊!你僅能夠在lambda中封裝有限的業務邏輯,這樣設計的目的:讓lambda純粹為了編寫簡單的函數而設計,def則專注於處理更大的業務。

與普通函數差異:

普通函數:

#普通函數,帶倆參數的寫法

def add(x,y): 
return x*y
rs = add(10,20)
print(rs)

匿名函數:

#帶有倆參數的匿名函數

b = lambda x,y:x*y 
rs = b(10,20)
print(rs)

實例:

#計算存放100個數字的列表的每一個數字的平方,返回一個新的列表

print(list(map(lambda x:x*x,[x for x in range(100)])))

執行結果:

[0, 1, 4, 9, 16, 25, 36, 49, 64, 81, 100, 121, 144, 169, 196, 225, 256, 289, 324, 361, 400, 441, 484, 529, 576, 625, 676, 729, 784, 841, 900, 961, 1024, 1089, 1156, 1225, 1296, 1369, 1444, 1521, 1600, 1681, 1764, 1849, 1936, 2025, 2116, 2209, 2304, 2401, 2500, 2601, 2704, 2809, 2916, 3025, 3136, 3249, 3364, 3481, 3600, 3721, 3844, 3969, 4096, 4225, 4356, 4489, 4624, 4761, 4900, 5041, 5184, 5329, 5476, 5625, 5776, 5929, 6084, 6241, 6400, 6561, 6724, 6889, 7056, 7225, 7396, 7569, 7744, 7921, 8100, 8281, 8464, 8649, 8836, 9025, 9216, 9409, 9604, 9801]


分享到:


相關文章: