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

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



用法很簡單,如下例的 f 及 g
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
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))
 
# 《程式語言教學誌》的範例程式
# 檔名:expr22.py
# 功能:示範 Python 程式
# 作者:張凱慶
# 時間:西元 2010 年 12 月


執行結果如下



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


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


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


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


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


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


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


lambda 運算式也可以寫在函數定義中,例如
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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
 
# 《程式語言教學誌》的範例程式
# 檔名:expr23.py
# 功能:示範 Python 程式
# 作者:張凱慶
# 時間:西元 2010 年 12 月


執行結果如下



第 5 行
8
f = lambda_demo(2)


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


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


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






沒有留言: