python之lambda函數
今天復習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 = lambdax : x + 2 print(func) print(func(3))
可見,此處的func相當於lambda的函數名,盡管lambda是匿名函數,但是調用這個匿名函數需要一個實例,這個func就是他的實例。
但是,匿名函數本來就不需要一個函數名,此處的使用純屬多此一舉,在python編程的使用中不多見。
python之lambda函數