匿名函數(shù):使用lambda創(chuàng)建的函數(shù),所謂匿名,意即不再使用def語句這樣標準的形式定義一個函數(shù)。
目前創(chuàng)新互聯(lián)已為數(shù)千家的企業(yè)提供了網(wǎng)站建設(shè)、域名、虛擬主機、網(wǎng)站托管、企業(yè)網(wǎng)站設(shè)計、武清網(wǎng)站維護等服務(wù),公司將堅持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。
好處:
1、使用Python寫一些執(zhí)行腳本時,使用lambda可以省去定義函數(shù)的過程,讓代碼更加精簡。
2、對于一些抽象的,不會別的地方再復(fù)用的函數(shù),有時候給函數(shù)起個名字也是個難題,使用lambda不需要考慮命名的問題。
3、使用lambda在某些時候讓代碼更容易理解。了解更多python匿名函數(shù)相關(guān)知識,可以來老男孩教育。
應(yīng)用場景:經(jīng)常與一些內(nèi)置函數(shù)相結(jié)合使用,比如說map()、filter()、sorted()、reduce()等。
表達式格式:lambda 參數(shù)列表:lambda體
匿名函數(shù) 簡單的需要用函數(shù)去解決的問題 匿名函數(shù)的函數(shù)體 只有一行 也叫l(wèi)ambda表達式
python 使用 lambda 來創(chuàng)建匿名函數(shù)。
lambda函數(shù)的語法只包含一個語句,如下:
等價于
復(fù)制。python是一款大型的國產(chǎn)編輯軟件,在軟件中的匿名函數(shù)不包含復(fù)制,該軟件中的產(chǎn)品種類齊全,深受人們的喜愛。
在Python中,lambda函數(shù)是一個簡單的匿名函數(shù)。該函數(shù)沒有函數(shù)名,它可以有多個參數(shù),但函數(shù)只由一個表達式構(gòu)成。
lambda函數(shù)具體的格式如下:
lambda 參數(shù) : 表達式
其中, lambda 是關(guān)鍵字, 參數(shù) 是函數(shù)的參數(shù),可以有0至多個。冒號后面是表達式,也是該函數(shù)中的唯一的表達式,lambda函數(shù)會返回該表達式的返回值。
我們來看一個具體的例子。
在上述代碼中,number1, number2是lambda函數(shù)的參數(shù),number1**2+number**2是函數(shù)的表達式,該函數(shù)返回number1, number2兩個數(shù)的平方和。
上述代碼創(chuàng)建了一個lambda函數(shù)后將其賦值給變量sum_square, 在print函數(shù)中通過sum_square來調(diào)用這個lambda函數(shù)。
上述的lambda函數(shù)完全可用標準的函數(shù)來實現(xiàn),我們可以將上述代碼改寫成下面的代碼。
在代碼中,定義了函數(shù)sum_square,該函數(shù)包含兩個參數(shù),并執(zhí)行一條語句并將該語句的執(zhí)行結(jié)果作為函數(shù)返回值。通過上述代碼可以幫助我們更直觀地理解lambda函數(shù)。
lambda函數(shù)的可讀性較差,那么為什么要有這樣奇怪的匿名函數(shù)呢?這個要從lambda的使用場合說起。我們來看下面的代碼。
上述代碼定義了一個數(shù)值列表,調(diào)用python的內(nèi)置函數(shù)filter來生成一個新的迭代器。 filter函數(shù)的第一個參數(shù)為一個函數(shù),用于決定過濾的方法;第二個參數(shù)為一個可迭代的對象如列表、集合等。filter函數(shù)返回一個新的迭代器, 用于獲得滿足第一個函數(shù)為真的所有元素。在上述代碼中,我們給filter傳遞的第一個參數(shù)是一個匿名函數(shù):lambda number:number%3==0, 該函數(shù)在一個數(shù)整除3時為True,否則為False. filter函數(shù)會創(chuàng)建一個新的迭代器,通過調(diào)用上述匿名函數(shù)來判斷該元素是否滿足條件,得到所有3的倍數(shù)的數(shù)。
當然,上述代碼也可以使用正常的函數(shù)方式來實現(xiàn),如下所示:
我們可以看到,所有匿名函數(shù)的功能都可以通過標準函數(shù)來實現(xiàn)。匿名函數(shù)常在調(diào)用其它函數(shù)(如filter, map等)時作為參數(shù)使用。使用匿名函數(shù)可以使代碼更為精簡。匿名函數(shù)主要用于完成簡單的任務(wù),如果匿名函數(shù)過于復(fù)雜,會導(dǎo)致可讀性較差,調(diào)試起來也比較困難,因此,強烈不建議使用lambda寫天書般的代碼。總之,要根據(jù)實際情況決定是否使用匿名函數(shù)。