用法很簡單,如下例的 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
沒有留言:
張貼留言