lambda - 精簡的函式

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'>