Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Lambda意外评估_Python_Python 3.x - Fatal编程技术网

Python Lambda意外评估

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) 演示: >>>

第一个帖子在这里

我想列一张电影的清单。电影将在Tkinter上的列表中显示。当您单击“更新”按钮时,计划将被删除,程序将更新其旁边的标签。问题是无论单击哪个按钮,它都会更新最后一个标签。我想这是因为

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