在C++11和C#中都有匿名函數(shù)的存在。下面看看在python中匿名函數(shù)的使用。
1.lambda只是一個(gè)表達(dá)式,函數(shù)體比def簡單很多。
2.lambda的主體是一個(gè)表達(dá)式,而不是一個(gè)代碼塊。僅僅能在lambda表達(dá)式中封裝有限的邏輯進(jìn)去。
3.lambda表達(dá)式是起到一個(gè)函數(shù)速寫的作用。允許在代碼內(nèi)嵌入一個(gè)函數(shù)的定義。
例1.定義一個(gè)lambda表達(dá)式,求三個(gè)數(shù)的和
# -*- 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表達(dá)式求n的階乘
# -*- coding: UTF-8 -*-
n = 5
print reduce(lambda x,y:x*y,range(1,n+1))
輸出:120
4.lambda表達(dá)式也可以用在def函數(shù)中
# -*- coding: UTF-8 -*-
def action(x):
return lambda y:x + y
a = action(2)
print a(22)
輸出:24
這里定義了一個(gè)action函數(shù),返回了一個(gè)lambda表達(dá)式。其中l(wèi)ambda表達(dá)式獲取到了上層def作用域的變量名x的值。
a是action函數(shù)的返回值,a(22),即是調(diào)用了action返回的lambda表達(dá)式。
這里也可以把def直接寫成lambda形式。如下
# -*- coding: UTF-8 -*-
b = lambda x:lambda y:x + y
a = b(3)
print a(2)
print (b(2))(2)
輸出:
5
4
好了這篇文章就結(jié)束到這了,需要的朋友可以看下面的相關(guān)內(nèi)容
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061
微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元

