-2

可能重复:
如何在 python 中使用 eval 分配变量的值?

我想使用python为字符串内部的变量赋值

所以假设

y = 'x  = 5' 
eval(y) # does not work

我想要一些评估这个表达式的东西,以便x = 5在 python 中

4

3 回答 3

1

请尝试exec

In [8]: y = 'x  = 5'

In [9]: exec(y)

In [10]: x
Out[10]: 5

但是,与 一样eval,我想这里存在安全问题(例如,请参阅这篇文章),因此您可能希望尽可能从不同的角度进行处理。至于为什么eval不起作用,那是因为它正在评估字符串,就好像它是一个 Python 表达式一样。因此,当您说 时x = 5,没有返回结果。exec另一方面将执行该语句,在这种情况下,它将x = 5在您的程序中设置。

于 2012-11-19T20:14:06.930 回答
1

您可以为此使用该exec语句:

exec y

(在 Python 3 中,它是一个函数,而不是语句。)

但是,您可能不应该这样做。如果您使用用户输入文本执行此操作,则会存在安全风险。它还可以做您可能没想到的事情,具体取决于您执行代码的范围。有关更多信息,请参阅文档。通常有比使用exec.

于 2012-11-19T20:15:32.120 回答
0

您正在寻找exec.

y = 'x  = 5' 
exec(y)
print x
于 2012-11-19T20:15:46.780 回答