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