標籤:operation 疑惑 idt 注意 lambda fun 賦值 lam 圖片
今天複習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 + 2print(func)print(func(3))
可見,此處的func相當於lambda的函數名,儘管lambda是匿名函數,但是調用這個匿名函數需要一個執行個體,這個func就是他的執行個體。
但是,匿名函數本來就不需要一個函數名,此處的使用純屬多此一舉,在python編程的使用中不多見。
python之lambda函數