![](/img/trans.png)
[英]Python Newbie: using eval() to assign a value to a self.variable
[英]How can I assign the value of a variable using eval in python?
好的。 所以我的问题很简单:如何在 Python 中使用 eval 分配变量的值? 我试过eval('x = 1')
但这行不通。 它返回一个语法错误。 为什么这行不通?
因为x=1
是一个语句,而不是一个表达式。 使用exec
运行语句。
>>> exec('x=1')
>>> x
1
顺便说一句,如果您只需要分配一个动态名称,则有很多方法可以避免使用exec
/ eval
,例如您可以使用字典、 setattr
函数, 或 :locals()
字典
>>> locals()['y'] = 1
>>> y
1
更新:虽然上面的代码在 REPL 中有效,但它在函数中不起作用。 如果exec
没有问题,请参阅在 Python 中修改局部变量以获取一些替代方法。
你不能,因为变量赋值是一个语句,而不是一个表达式,而且eval
只能eval
表达式。 使用exec
代替。
更好的是,不要使用任何一个并告诉我们您真正想要做什么,以便我们可以提出一个安全和理智的解决方案。
x = 0 def assignNewValueToX(v): global x x = v eval('assignNewValueToX(1)') print(x)
它有效......因为python实际上会运行assignNewValueToX来评估表达式。 它可以进一步开发,但我相信对于几乎任何人可能有的需求,都有更好的选择。
您实际上可以将exec()
命令放入eval()
所以你的语句看起来像eval("exec('x = 1')")
ps这很危险
你可以使用 lambda,像这样:
eval('(lambda x=10: x+2)()')
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.