最近剛實(shí)際使用lambda排抬,覺(jué)得很清晰好用,做個(gè)記錄连舍。
什么是lambda 没陡?
我的理解是一個(gè)定義匿名函數(shù)的方式,可以獲得一個(gè)“非常規(guī)定義”的函數(shù)索赏。一般定義函數(shù)盼玄,都需要def name 然后定義函數(shù)主體。而使用lambda就可以直接只寫參數(shù)和主體潜腻,只用一行解決埃儿,這對(duì)于一些簡(jiǎn)短的函數(shù)或者僅單處調(diào)用的函數(shù)來(lái)說(shuō)是非常棒的,可以讓代碼更簡(jiǎn)潔一些
1融涣、代替簡(jiǎn)單的函數(shù)定義
比如我們需要實(shí)現(xiàn)一個(gè)函數(shù)童番,返回x+y的值,常規(guī)定義函數(shù)如下
def getPlusResult(x, y):
? ? return x+y
使用lambda定義
a = lambda x, y : x+y
對(duì)于lambda來(lái)說(shuō)威鹿,冒號(hào)左側(cè)是參數(shù)妓盲,右側(cè)是函數(shù)主體,也即匿名函數(shù)實(shí)際返回的值
2专普、還有一個(gè)用法是用來(lái)傳遞參數(shù)悯衬,控制分支,其實(shí)也算是1的一個(gè)變種
def SetFuctionName(type):
? ? if type == 1:
? ? ? ? do something
? ? elif type == 2:
? ? ? ? do something else
a = lambda : SetFunctionName(1)
b = lambda : SetFunctionName(2)
這種用法的話要看具體的情況。我自己是在信號(hào)綁定的時(shí)候用到的筋粗。處理函數(shù)相同策橘,但不同的入口有參數(shù)差別,需要在發(fā)射信號(hào)的時(shí)候傳不同的參數(shù)娜亿,而qt的信號(hào)綁定又需要綁定一個(gè)函數(shù)丽已,因此就用了匿名函數(shù)