什么是lambda函數?
編程中提到的 lambda 表達式,通常是在 需要一個函數,但是又不想費神去命名一個函數 ...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函數不能返回假值。函數本身總是為真,它的返回值可以為任何值。)