用法很簡單,如下例的 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 |
參考資料
http://docs.python.org/py3k/tutorial/controlflow.html
http://docs.python.org/py3k/reference/expressions.html
http://docs.python.org/py3k/tutorial/controlflow.html
http://docs.python.org/py3k/reference/expressions.html
沒有留言:
張貼留言