我想使用python为字符串内部的变量赋值
所以假设
y = 'x = 5'
eval(y) # does not work
我想要一些评估这个表达式的东西,以便x = 5
在 python 中
我想使用python为字符串内部的变量赋值
所以假设
y = 'x = 5'
eval(y) # does not work
我想要一些评估这个表达式的东西,以便x = 5
在 python 中
请尝试exec
:
In [8]: y = 'x = 5'
In [9]: exec(y)
In [10]: x
Out[10]: 5
但是,与 一样eval
,我想这里存在安全问题(例如,请参阅这篇文章),因此您可能希望尽可能从不同的角度进行处理。至于为什么eval
不起作用,那是因为它正在评估字符串,就好像它是一个 Python 表达式一样。因此,当您说 时x = 5
,没有返回结果。exec
另一方面将执行该语句,在这种情况下,它将x = 5
在您的程序中设置。
您可以为此使用该exec
语句:
exec y
(在 Python 3 中,它是一个函数,而不是语句。)
但是,您可能不应该这样做。如果您使用用户输入文本执行此操作,则会存在安全风险。它还可以做您可能没想到的事情,具体取决于您执行代码的范围。有关更多信息,请参阅文档。通常有比使用exec
.
您正在寻找exec
.
y = 'x = 5'
exec(y)
print x