添加按钮,按钮的功效由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按钮的传参函数或者是线程启动时候也可以使用该匿名函数的方法来调用就可以达到同样的效果。