lambda函數介紹
Python中用lambda關鍵字來表示匿名函數,冒號前的表示函數參數,具體例子如下所示:
list(map(lambda x : x * x, [1, 2, 3, 4, 5, 6, 7, 8, 9]))
[1, 4, 9, 16, 25, 36, 49, 64, 81]
可以看出匿名函數lambda 實際上就是下面的函數的匿名形式:
def f(x):
return x * x
匿名函數的特點
- 只能有一個表達式,不用寫return,返回值就是該表達式的結果。
- 因爲匿名函數沒有名字,所以不用擔心函數名衝突。
- 匿名函數也是一個函數對象,也可以把匿名函數賦值給一個變量,再利用變量來調用該匿名函數。或者將匿名函數作爲返回值返回。
- 匿名函數簡化了函數定義的書寫形式,使得代碼更爲簡潔。
- 但是匿名函數可能在一定程度上降低可讀性。
lambda和def定義函數的區別
- def創建的方法是有名稱的,而lambda沒有。
- lambda只是一個表達式,而def則是一個語句。
- lambda表達式中的:後面只能有一個表達式,而def則可以有多個。
- if或for或print等語句不能用於lambda中,而def可以。
- lambda一般用來定義簡單的函數,而def可以定義複雜的函數。
- lambda函數不能被別的程序調用,def可以。