Python 使用lambda在回调中设置属性

Python 使用lambda在回调中设置属性,python,lambda,callback,Python,Lambda,Callback,尝试了解如何使用lambda函数设置对象属性 我得到了一个需要使用UI回调设置属性的例子,它需要一个函数对象 我正在尝试类似的东西,但它不起作用,并给我一个语法错误 pm.button(command=lambda *args: uvOpts.grid = True) 这解决了语法错误(在pm.按钮中不能有第二个“=”),如果uvOpts位于 设置我正在使用的对象属性,以避免在lambda函数定义中使用=符号 我想补充一点,如果您需要使uvOpts在lambda范围内可见,您可能最终需要使其

尝试了解如何使用lambda函数设置对象属性

我得到了一个需要使用UI回调设置属性的例子,它需要一个函数对象

我正在尝试类似的东西,但它不起作用,并给我一个语法错误

pm.button(command=lambda *args: uvOpts.grid = True)

这解决了语法错误(在
pm.按钮中不能有第二个“
=
”),如果
uvOpts
位于

设置我正在使用的对象属性,以避免在
lambda
函数定义中使用
=
符号



我想补充一点,如果您需要使
uvOpts
在lambda范围内可见,您可能最终需要使其全球化,至少在模块级别(例如,阅读中的答案)

我认为lambda范围内的变量赋值是不可能的。试试这个链接:
*args
是不需要的,所以一个简单的
pm.按钮(command=lambda:setattr(uvOpts,'grid',True))
就足够了。@martineau你是对的,但是因为我不知道是否因为任何其他原因需要
args
(OP可能只是简化了他/她的问题),为了让cmcPasserby确定解决错误所需的最小更改,我保留了它。如果不需要,可以删除参数。谢谢你强调这一点!我建议只根据内容回答问题,而不是事后猜测OP可能遗漏了哪些细节。@martineau我宁愿保留它,因为我不想让“分散读者的注意力”认为
*args
是问题的一部分。这在上下文中是不必要的,但也不会造成伤害。我应该在我的回答中提到,这个论点是没有必要的,你是对的,但是现在你的评论说明了这个额外的方面(这就是为什么我投票支持你的评论):)。
pm.button(command=lambda *args: setattr(uvOpts, 'grid', True))