lambda - 精簡的函式
- 在閱覽本篇前筆者建議讀者可以同時參閱def - 建立函式
lambda運算式可以定義一個函式,並且產生定義的函式物件。
基本語法:
functionName = lambda x : x+x #函式 #參數
例如一個有算立方的lambda函式:
cube = lambda x: x * x * x
使用這個函式物件可以計算立方。
同時,lambda與def是可以互相轉換的,例如上述計算立方的函式會等同於:
def cube(): return x*x*x
實際使用此method :
print(cude(18)) 5832
此外,lambda跟def的用法有一些差別:lambda不能有區塊、lambda只能輸入運算式。
也就是說不能創造太複雜的函式。
另一個例子是計算最大值:
>>>max = lambda x, y: x if x > y else y >>>print(max(3.314,3.14)) 3.314
lambda要先告訴它回傳值的內容,如果有條件的話就在後面指定。
放在max 變數中的其實是一個方法物件。
要使用lambda產生的方法的時候便呼叫max變數如同它是一個方法一樣。
這在Python中是一個很重要概念:方法也是一個物件的實例。
因此下列動作也是可以的
>>> a = max >>> b = a >>> print(a(b(3,15),12)) 15
a跟b以及max都是function類別的實例。 這跟用def 陳述句產生的方法是相同類型
>>> type(max) <type 'function'> >>> def min(x,y): ... if x < y: ... return x ... else: ... return y ... >>> type(min) <type 'function'>