在字符串中使用变量

时间:2012-11-19 20:11:36

标签: python variables

  

可能重复:
  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

3 个答案:

答案 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
相关问题