添加按鈕,按鈕的功效由command=函數名,后面的函數實現,但是如果直接寫函數名,碰上那些需要參數的函數就會出錯
因此,有個簡單方法command=lambda:函數名(參數1,參數2.....)
但是有些小白可能比較懵了,lambda是什么呢?
在Python中有兩種函數,一種是def定義的函數,另一種是lambda函數,也就是大家常說的匿名函數。今天我就和大家聊聊lambda函數,在Python編程中,大家習慣將其稱為表達式。
當我們在傳入函數時,有些時候,不需要顯式地定義函數,直接傳入匿名函數更方便。
匿名函數有個限制,就是只能有一個表達式,不用寫return
,返回值就是該表達式的結果。
用匿名函數有個好處,因為函數沒有名字,不必擔心函數名沖突。此外,匿名函數也是一個函數對象,也可以把匿名函數賦值給一個變量,再利用變量來調用該函數
下面來看看一個例子
def is_odd(n): return n % 2 == 1 L = list(filter(is_odd, range(1, 20)))
如果用lambda來改造上面的這個例子呢?
L = list(filter(lambda n:n % 2 == 1, range(1, 20)))
從這個簡單的例子,我們可以看出,用lambda函數首先減少了代碼的冗余,其次,用lambda函數,不用費神地去命名一個函數的名字,可以快速的實現某項功能,最后,lambda函數使代碼的可讀性更強,程序看起來更加簡潔。
從上面這個簡單的例子,也可以看出來lambda函數的語法是唯一的,其形式如下:
lambda argument_list:expersion
語法中的argument_list是參數列表,它的結構與Python中函數(function)的參數列表是一樣的
上面的例子中argument_list是其實就是傳參的n,然后expersion則是具體的n % 2 == 1。
在添加TK按鈕的傳參函數或者是線程啟動時候也可以使用該匿名函數的方法來調用就可以達到同樣的效果。