繁体   English   中英

如何在 python 中使用 eval 为变量赋值?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM