在C++11和C#中都有匿名函數的存在。下面看看在python中匿名函數的使用。
1.lambda只是一個表達式,函數體比def簡單很多。
2.lambda的主體是一個表達式,而不是一個代碼塊。僅僅能在lambda表達式中封裝有限的邏輯進去。
3.lambda表達式是起到一個函數速寫的作用。允許在代碼內嵌入一個函數的定義。
例1.定義一個lambda表達式,求三個數的和
# -*- coding: UTF-8 -*-f = lambda x,y,z:x + y + zprint f(1,2,3)print f(4,5,6)輸出:615
例2.用lambda表達式求n的階乘
# -*- coding: UTF-8 -*-n = 5print reduce(lambda x,y:x*y,range(1,n+1))輸出:120
4.lambda表達式也可以用在def函數中
# -*- coding: UTF-8 -*-def action(x): return lambda y:x + ya = 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 + ya = b(3)print a(2)print (b(2))(2)輸出:54
好了這篇文章就結束到這了,需要的朋友可以看下面的相關內容
新聞熱點
疑難解答