Python 如何定義匿名或內(nèi)聯(lián)函數(shù)
問題
你想為 sort() 操作創(chuàng)建一個(gè)很短的回調(diào)函數(shù),但又不想用 def 去寫一個(gè)單行函數(shù), 而是希望通過某個(gè)快捷方式以內(nèi)聯(lián)方式來創(chuàng)建這個(gè)函數(shù)。
解決方案
當(dāng)一些函數(shù)很簡(jiǎn)單,僅僅只是計(jì)算一個(gè)表達(dá)式的值的時(shí)候,就可以使用lambda表達(dá)式來代替了。比如:
>>> 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á)式,它的值就是最后的返回值。也就是說不能包含其他的語言特性了, 包括多個(gè)語句、條件表達(dá)式、迭代以及異常處理等等。
你可以不使用lambda表達(dá)式就能編寫大部分python代碼。 但是,當(dāng)有人編寫大量計(jì)算表達(dá)式值的短小函數(shù)或者需要用戶提供回調(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. JSP+Servlet實(shí)現(xiàn)文件上傳到服務(wù)器功能2. asp讀取xml文件和記數(shù)3. JSP之表單提交get和post的區(qū)別詳解及實(shí)例4. 低版本IE正常運(yùn)行HTML5+CSS3網(wǎng)站的3種解決方案5. jsp+servlet實(shí)現(xiàn)猜數(shù)字游戲6. 將properties文件的配置設(shè)置為整個(gè)Web應(yīng)用的全局變量實(shí)現(xiàn)方法7. UDDI FAQs8. ASP常用日期格式化函數(shù) FormatDate()9. HTML <!DOCTYPE> 標(biāo)簽10. CSS可以做的幾個(gè)令你嘆為觀止的實(shí)例分享
