當咱們在傳入函數時,有些時候,不須要顯式地定義函數,直接傳入匿名函數更方便。函數
在Python中,對匿名函數提供了有限支持。仍是以map()
函數爲例,計算f(x)=x2時,除了定義一個f(x)
的函數外,還能夠直接傳入匿名函數:ui
>>> map(lambda x: x * x, [1, 2, 3, 4, 5, 6, 7, 8, 9]) [1, 4, 9, 16, 25, 36, 49, 64, 81]
經過對比能夠看出,匿名函數lambda x: x * x
實際上就是:3d
def f(x): return x * x
關鍵字lambda
表示匿名函數,冒號前面的x
表示函數參數。code
匿名函數有個限制,就是隻能有一個表達式,不用寫return
,返回值就是該表達式的結果。對象
用匿名函數有個好處,由於函數沒有名字,沒必要擔憂函數名衝突。此外,匿名函數也是一個函數對象,也能夠把匿名函數賦值給一個變量,再利用變量來調用該函數:io
>>> f = lambda x: x * x >>> f <function <lambda> at 0x10453d7d0> >>> f(5) 25
一樣,也能夠把匿名函數做爲返回值返回,好比:function
def build(x, y): return lambda: x * x + y * y
Python對匿名函數的支持有限,只有一些簡單的狀況下能夠使用匿名函數。class