懶人包: lambda是為了快速定義單行函數而存在的簡潔方式
首先我們先定義一個加法的函數
def add(a,b): return a+b
那使用lambda的寫法呢?
add = lambda a,b : a+b
簡單來說
lambda 定義了一個匿名函數
而lambda 並不會帶來程序運行效率的提高,只會使代碼更簡潔。
如果可以使用for…in…if來完成的,堅決不用lambda。
如果使用lambda,lambda內不要包含循環,如果有,我寧願定義函數來完成,使代碼獲得可重用性和更好的可讀性。
參考來源:https://www.cnblogs.com/evening/archive/2012/03/29/2423554.html
那有沒有複雜一點的範例?有
以下附上使用Dict+Lambda來實作switch的範例:
點個餐範例
def switch(number): f1 = lambda :"蘋果派" f2 = lambda :"雞塊" f3 = lambda :"薯條" f4 = lambda :"飲料" return { 1 : f1(), 2 : f2(), 3 : f3(), 4 : f4() }.get(number, 0) print(switch(2))
四則運算也滿好用的
def switch(s,a,b): f1 = lambda a,b: a+b f2 = lambda a,b: a-b f3 = lambda a,b: a*b f4 = lambda a,b: a/b return { '+' : f1(a,b), '-' : f2(a,b), '*' : f3(a,b), '/' : f4(a,b) }.get(s, 0) print(switch("+",2,1))