我想知道是否可以创建一个“def”列表,连接 20 个按钮的列表,并为每个按钮设置不同的回调。
谢谢
最佳答案
Python 中的
def
只是一个将名称绑定(bind)到函数/闭包的常规语句。例如你可以写
flist = []
for i in range(30):
def func(x, i=i):
print(x * i)
flist.append(func)
之后flist[7](6)
将返回42。
棘手的部分只是上面声明中的i=i
。这是必需的,因为闭包捕获变量,而不是当前变量值。如果没有 i=i
,所有函数都将使用用于循环的相同变量 i
。
Python 还对匿名函数有一些支持,因此在上面的简单情况下,代码可以缩短为
flist = []
for i in range(30):
flist.append(lambda x, i=i: print(x * i))
但是lambda
非常有限(只有一个表达式,没有语句)
关于python - 是否可以创建 "def"的列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27076496/