lambda 表達(dá)式是現(xiàn)代編程語(yǔ)言爭(zhēng)相引入的一種語(yǔ)法,如果說(shuō)函數(shù)是命名的、方便復(fù)用的代碼塊,那么 lambda 表達(dá)式則是功能更靈活的代碼塊,它可以在程序中被傳遞和調(diào)用。回顧局部函數(shù)回顧《Python函數(shù)高級(jí)用法》一節(jié)中,get_math_func() 函數(shù)將返回三個(gè)局部函數(shù)之一。該函數(shù)代碼如下:def get_math_func(type) : 既然局部函數(shù)的函數(shù)名沒(méi)有太大的意義,那么就考慮使用 lambda 表達(dá)式來(lái)簡(jiǎn)化局部函數(shù)的寫法。 使用 lambda 表達(dá)式代替局部函數(shù)如果使用 lambda 表達(dá)式來(lái)簡(jiǎn)化 get_math_func() 函數(shù),則可以將程序改寫成如下形式:
注意:由于 lambda 表達(dá)式只能是單行表達(dá)式,不允許使用更復(fù)雜的函數(shù)形式,因此上面 ③ 號(hào)代碼處改為計(jì)算 1+2+3+…+n 的總和。 lambda 表達(dá)式的語(yǔ)法格式如下: lambda [parameter_list] : 表達(dá)式 從上面的語(yǔ)法格式可以看出 lambda 表達(dá)式的幾個(gè)要點(diǎn):
實(shí)際上,lambda 表達(dá)式的本質(zhì)就是匿名的、單行函數(shù)體的函數(shù)。因此,lambda 表達(dá)式可以寫成函數(shù)的形式。 例如,對(duì)于如下 lambda 表達(dá)式: lambda x , y:x + y 可改寫為如下函數(shù)形式:def add(x, y): 總體來(lái)說(shuō),函數(shù)比 lambda 表達(dá)式的適應(yīng)性更強(qiáng),lambda 表達(dá)式只能創(chuàng)建簡(jiǎn)單的函數(shù)對(duì)象(它只適合函數(shù)體為單行的情形)。但 lambda 表達(dá)式依然有如下兩個(gè)用途:
下面代碼示范了通過(guò) lambda 表達(dá)式來(lái)調(diào)用 Python 內(nèi)置的 map() 函數(shù):
總結(jié)本節(jié)所介紹的 lambda 表達(dá)式是 Python 編程的核心機(jī)制之一。Python 語(yǔ)言既支持面向過(guò)程編程,也支持面向?qū)ο缶幊?。?lambda 表達(dá)式是 Python 面向過(guò)程編程的語(yǔ)法基礎(chǔ),因此讀者必須引起重視。Python 的 lambda 表達(dá)式只是單行函數(shù)的簡(jiǎn)化版本,因此 lambda 表達(dá)式的功能比較簡(jiǎn)單。 |
|