Lambda函數是python中一種快速定義單行的最小函數,可以用在任何需要函數的地方 。它只是一個表達式,函數體比def簡單很多。主體是一個表達式,而不是一個代碼塊。僅僅能在lambda表達式中封裝有限的邏輯進去。lambda函數擁有自己的命名空間,且不能訪問自有參數列表之外或全局命名空間里的參數。下面的例子比較了傳統的函數定義def與lambda定義方式:
普通def函數定義:
def sum(x, y): return x + y print(sum(4,6))
運行結果:
10
lambda表達式定義:
p = lambda x,y:x+y print(p(4,6))
運行結果:
10
可以看到,兩個函數得到的結果一樣,而對於實現簡單功能的函數來說,使用lambda函數來定義更加精簡靈活,還可以直接把函數賦值給一個變量,用變量名來表示函數名。
使用lambda函數還有一些注意事項: lambda 函數可以接收任意多個參數 (包括可選參數) 並且返回單個表達式的值。 lambda 函數不能包含命令,包含的表達式不能超過一個。
傳入一個參數的lambda表達式:
a = lambda x: x * x print(a(3))
運行結果:
9
多個參數的lambda表達式:
a = lambda x, y, z: (x + 8) * y - z print(a(5, 6, 8))
運行結果:
70
lambda表達式也可以嵌入def函數中進行使用:
def func(n): return lambda s: s * n result = func(2) print(result('word')) print(result(5))
運行結果:
wordword
10
本文轉載:https://www.myblou.com/archives/145