pre-evaluation in a definition of a lambda function
本问题已经有最佳答案,请猛点这里访问。
我对python不太熟悉,遇到了一个小代码问题,它的目标是用qt实现一个菜单:
1 2 3 4 5 6 7 8 9 | def setChoice(self,choice=None): do something here... listOfChoices=[choice1,choice2,choice3] menu=QMenu(self) for choice in listOfChoices: action=menu.addAction(choice) action.triggered.connect(lambda : self.setChoice(choice=choice)) |
问题是,
关于直接部分评估的一个可能相关的问题:如何从像
丹尼斯
这是python
为了解决这个问题,您需要创建一个新的本地作用域,以便有一些地方可以"保存"变量:
1 2 3 4 5 | for choice in listOfChoices: def act(choice): action=menu.addAction(choice) action.triggered.connect(lambda : self.setChoice(choice=choice)) act(choice) |
或者,在第二个问题中,
1 2 3 | def act(a): return lambda x: x + a blah = act(1) |