在C++11和C#中都有匿名函數的存在。下面看看在python中匿名函數的使用。
1.lambda只是一個表達式,函數體比def簡單很多。
2.lambda的主體是一個表達式,而不是一個代碼塊。僅僅能在lambda表達式中封裝有限的邏輯進去。
3.lambda表達式是起到一個函數速寫的作用。允許在代碼內嵌入一個函數的定義。
例1.定義一個lambda表達式,求三個數的和
# -*- coding: UTF-8 -*- f = lambda x,y,z:x + y + z print f(1,2,3) print f(4,5,6) 輸出: 6 15
例2.用lambda表達式求n的階乘
# -*- coding: UTF-8 -*- n = 5 print reduce(lambda x,y:x*y,range(1,n+1)) 輸出:120
4.lambda表達式也可以用在def函數中
# -*- coding: UTF-8 -*- def action(x): return lambda y:x + y a = action(2) print a(22) 輸出:24
這里定義了一個action函數,返回了一個lambda表達式。其中lambda表達式獲取到了上層def作用域的變量名x的值。
a是action函數的返回值,a(22),即是調用了action返回的lambda表達式。
這里也可以把def直接寫成lambda形式。如下
# -*- coding: UTF-8 -*- b = lambda x:lambda y:x + y a = b(3) print a(2) print (b(2))(2) 輸出: 5 4
好了這篇文章就結束到這了,需要的朋友可以看下面的相關內容
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
