可能重复:
How can I assign the value of a variable using eval in python?
我想使用python
为一个字符串内的变量赋值所以假设
y = 'x = 5'
eval(y) # does not work
我想要一些评估这个表达式的东西,以便python中的x = 5
答案 0 :(得分:1)
请尝试exec
:
In [8]: y = 'x = 5'
In [9]: exec(y)
In [10]: x
Out[10]: 5
然而,与eval
一样,我认为这里存在安全问题(例如,请参阅this article),因此如果可能,您可能希望从不同角度进行处理。至于为什么eval
不起作用,这是因为它正在评估字符串,好像它是一个Python表达式。因此,当您说x = 5
时,没有返回结果。另一方面,exec
将执行该语句,在这种情况下,它将在您的程序中设置x = 5
。
答案 1 :(得分:1)
您可以使用exec
语句:
exec y
(在Python 3中,它是一个函数,而不是一个语句。)
但是,你可能不应该这样做。如果使用用户输入文本执行此操作,则存在安全风险。它也可以执行您可能不会期望的操作,具体取决于您执行代码的范围。有关详细信息,请参阅the documentaton。除了使用exec
之外,通常有更好的方法来做你想做的事情。
答案 2 :(得分:0)
您正在寻找exec
。
y = 'x = 5'
exec(y)
print x