Python Lambda意外评估
第一个帖子在这里 我想列一张电影的清单。电影将在Tkinter上的列表中显示。当您单击“更新”按钮时,计划将被删除,程序将更新其旁边的标签。问题是无论单击哪个按钮,它都会更新最后一个标签。我想这是因为Python Lambda意外评估,python,python-3.x,Python,Python 3.x,第一个帖子在这里 我想列一张电影的清单。电影将在Tkinter上的列表中显示。当您单击“更新”按钮时,计划将被删除,程序将更新其旁边的标签。问题是无论单击哪个按钮,它都会更新最后一个标签。我想这是因为 lambda:self.update\u评级(x) 在运行时计算,x也是。我希望x是特定循环上的x,而不是单击按钮时超出范围的x 我是python新手,因此非常感谢您的帮助 代码: 改用这个: lambda x=x: self.update_rating(x) 演示: >>>
lambda:self.update\u评级(x)
在运行时计算,x也是。我希望x是特定循环上的x,而不是单击按钮时超出范围的x
我是python新手,因此非常感谢您的帮助
代码:
改用这个:
lambda x=x: self.update_rating(x)
演示:
>>> x = 1
>>> a = lambda x=x:x
>>> a()
1
>>> x = 2
>>> a()
1
这里的想法是在定义函数时计算默认参数,而不是创建闭包,闭包在调用函数时计算从封闭范围中拾取变量。谢谢,我在这个问题上坚持了太久。@Henry--这是一个常见问题。
>>> x = 1
>>> a = lambda x=x:x
>>> a()
1
>>> x = 2
>>> a()
1