需要壹個函數,但是又不想費神去命名壹個函數
...return x*2
...f(3)6
g = lambda x: x*2g(3)6
(lambda x: x*2)(3)61、這是壹個lambda函數,它完成同上面普通函數相同的事情。註意這裏的簡短的語法;沒有小括號,
return是默認的,並且函數沒有名字,只有將它賦值給變量的變量名。
2、妳甚至可以不將lambda函數賦值給壹個變量而使用它。這不是舉世無雙的東西,它只是展示了 lambda 函數只是壹個內聯函數。
3、lambda函數是風格問題。不壹定非要使用它們,任何能夠使用它們的地方,都可以定義壹個分離的普通的函數,用它來替換。我將它們用在需要封裝特殊的,非重用的代碼上,用許多小的壹行函數不會弄亂我的代碼。
4、總之,
lambda函數是壹個可以接收任意多個參數(包括可選參數)並且返回單個表達式值的函數。
lambda函數不能包含命令,它們所包含的表達式不能超過壹個。不要試圖向lambda函數中塞入太多的東西;如果妳需要更復雜的東西,應該定義壹個普通函數,然後想讓它多長就多長。
順便這裏有幾件事情需要註意。首先,我們使用了and-or技巧的簡單形式,沒問題,因為壹個lambda函數在壹個布爾環境下
總為真。(這並不意味著lambda函數不能返回假值。函數本身總是為真,它的返回值可以為任何值。)