Python 3.1 快速導覽 - 運算式 lambda運算

lambda 為 Python 的關鍵字 (keyword) 之一,用來建立無名函數 (anonymous function) 。



用法很簡單,如下例的 f 及 g
f = lambda x: x ** x
print(f(1))
print(f(2))
print(f(3))
print(f(4))
print(f(5))

g = lambda x, y: x * y
print(g(1, 6))
print(g(2, 7))
print(g(3, 8))
print(g(4, 9))
print(g(5, 10))

# 《程式語言教學誌》的範例程式
# http://pydoing.blogspot.com/
# 檔名:expr22.py
# 功能:示範 Python 程式 
# 作者:張凱慶
# 時間:西元 2010 年 12 月 


執行結果如下



第 1 行
f = lambda x: x ** x


這是說 lambda 運算式 (expression) 有一個參數 (parameter) ,運算結果回傳冒號後的運算式。


第 2 行開始
print(f(1))
print(f(2))
print(f(3))
print(f(4))
print(f(5))


這裡直接印出回傳的計算結果。


如果需要兩個以上的參數,第 8 行
g = lambda x, y: x * y


此例中為 x 與 y ,結果回傳兩者的乘積。


為什麼 lambda 運算式叫無名函數呢?因為使用上跟函數 (function) 很像,可直接定義運算式的回傳結果,實際上 lambda 構成的運算式屬於函數物件 (object) 的一種


lambda 運算式也可以寫在函數定義中,例如
def lambda_demo(n):
    return lambda x: x ** n + x * 2 + 1

i = 1
f = lambda_demo(2)
while i <= 10:
    print(f(i))
    i += 1

# 《程式語言教學誌》的範例程式
# http://pydoing.blogspot.com/
# 檔名:expr23.py
# 功能:示範 Python 程式 
# 作者:張凱慶
# 時間:西元 2010 年 12 月 


執行結果如下



第 5 行
f = lambda_demo(2)


形同 f 為計算參數加 1 的平方數,若是另外定義 g
g = lambda_demo(3)


g 就會是計算 3 次方的多項式。


中英文術語對照
關鍵字keyword
無名函數anonymous function
運算式expression
參數parameter
函數function
物件object






沒有留言: