1. 程式人生 > >python之lambda函數

python之lambda函數

新建 In ret lam ima 圖片 pri clas 復習

今天復習python,看見一個關於lambda函數的例子,在python中使用lambda在某些時候十分方便,因為不必為了實現某些簡單功能而新建一個函數。但是有這麽一個lambda實例令我有些疑惑,現將其貼出來並推測其功用,如有錯誤,還請指正!

1 def func(a,b,operation):
2     print("a = %d"%a)
3     print("b = %d"%b)
4     print("result =",operation(a,b))
5 func(11,22,lambda x, y:x + y)
6 print("------------------------
") 7 func(11,22,lambda x, y : x - y)

運行結果:

技術分享圖片

可見:通過向func()函數傳遞了三個參數,依次是:11,22,lambda函數,也就是說將 lambda x, y: x + y 賦值給operation,那麽operation = lambda x, y : x + y。在func()函數中的第三條語句print("result=",operation)中調用了operation,也就相當於把lambda函數填入代替這個operation, operation括號內兩個值賦給lambda的x和y,通過lambda函數實現a和b的相加運算,也就是11 + 22。

在這裏operation = lambda x, y : x + y, operation相當於調用lambda函數的實例名,為函數實例賦值相當於為lambda函數傳值,lambda的表達式的結果類似於return 表達式 ,只是lambda函數無需return就能將表達式的值傳回調用處,這個函數示例是使用operation實例變量來調用lambda函數,那麽lambda表達式的值將返回給operation(),註意,不是返回給operation變量!!!operation類似於一個匿名函數的函數名,輸出函數名不能得到返回的值,只用使用函數名()來輸出結果。

func = lambda
x : x + 2 print(func) print(func(3))

技術分享圖片

可見,此處的func相當於lambda的函數名,盡管lambda是匿名函數,但是調用這個匿名函數需要一個實例,這個func就是他的實例。

但是,匿名函數本來就不需要一個函數名,此處的使用純屬多此一舉,在python編程的使用中不多見。

python之lambda函數