Python 如何定義匿名或內(nèi)聯(lián)函數(shù)
問(wèn)題
你想為 sort() 操作創(chuàng)建一個(gè)很短的回調(diào)函數(shù),但又不想用 def 去寫(xiě)一個(gè)單行函數(shù), 而是希望通過(guò)某個(gè)快捷方式以?xún)?nèi)聯(lián)方式來(lái)創(chuàng)建這個(gè)函數(shù)。
解決方案
當(dāng)一些函數(shù)很簡(jiǎn)單,僅僅只是計(jì)算一個(gè)表達(dá)式的值的時(shí)候,就可以使用lambda表達(dá)式來(lái)代替了。比如:
>>> add = lambda x, y: x + y>>> add(2,3)5>>> add(’hello’, ’world’)’helloworld’>>>
這里使用的lambda表達(dá)式跟下面的效果是一樣的:
>>> def add(x, y):... return x + y...>>> add(2,3)5>>>
lambda表達(dá)式典型的使用場(chǎng)景是排序或數(shù)據(jù)reduce等:
>>> names = [’David Beazley’, ’Brian Jones’,... ’Raymond Hettinger’, ’Ned Batchelder’]>>> sorted(names, key=lambda name: name.split()[-1].lower())[’Ned Batchelder’, ’David Beazley’, ’Raymond Hettinger’, ’Brian Jones’]>>>
討論
盡管lambda表達(dá)式允許你定義簡(jiǎn)單函數(shù),但是它的使用是有限制的。 你只能指定單個(gè)表達(dá)式,它的值就是最后的返回值。也就是說(shuō)不能包含其他的語(yǔ)言特性了, 包括多個(gè)語(yǔ)句、條件表達(dá)式、迭代以及異常處理等等。
你可以不使用lambda表達(dá)式就能編寫(xiě)大部分python代碼。 但是,當(dāng)有人編寫(xiě)大量計(jì)算表達(dá)式值的短小函數(shù)或者需要用戶(hù)提供回調(diào)函數(shù)的程序的時(shí)候, 你就會(huì)看到lambda表達(dá)式的身影了。
以上就是Python 如何定義匿名或內(nèi)聯(lián)函數(shù)的詳細(xì)內(nèi)容,更多關(guān)于Python 定義匿名或內(nèi)聯(lián)函數(shù)的資料請(qǐng)關(guān)注好吧啦網(wǎng)其它相關(guān)文章!
相關(guān)文章:
1. ajax post下載flask文件流以及中文文件名問(wèn)題2. WML語(yǔ)言的基本情況3. 利用CSS3新特性創(chuàng)建透明邊框三角4. 如何通過(guò)vscode運(yùn)行調(diào)試javascript代碼5. python 使用raw socket進(jìn)行TCP SYN掃描實(shí)例6. 使用Docker的NFS-Ganesha鏡像搭建nfs服務(wù)器的詳細(xì)過(guò)程7. IntelliJ IDEA導(dǎo)入jar包的方法8. JSP+Servlet實(shí)現(xiàn)文件上傳到服務(wù)器功能9. python dict如何定義10. ASP中解決“對(duì)象關(guān)閉時(shí),不允許操作。”的詭異問(wèn)題……
