我怎样才能在Python中使用eval分配一个variables的值?

好的。 所以我的问题很简单:如何在Python中使用eval分配variables的值? 我试过eval('x = 1')但那不行。 它返回一个SyntaxError。 为什么这不工作?

因为x=1是一个语句,而不是一个expression式。 使用exec来运行语句。

 >>> exec('x=1') >>> x 1 

顺便说一下,如果你所需要的只是一个dynamic的名字来分配,有很多方法可以避免使用exec / eval ,比如你可以使用字典, setattr函数 , locals()字典

 >>> locals()['y'] = 1 >>> y 1 

更新 :尽pipe上面的代码在REPL中起作用,但它不能在函数内部工作。 如果exec无疑,请参阅在Python中修改本地代码 。

你不能,因为variables赋值是一个语句,而不是一个expression式,而eval只能是evalexpression式。 改用exec

更好的是,不要使用,并告诉我们你真正想要做什么,以便我们能够提出一个安全和理智的解决scheme。

 x = 0
 def assignNewValueToX(v):
    全球x
     x = v

的eval( 'assignNewValueToX(1)')
打印(X)

它的工作原理…python将实际上运行assignNewValueToX能够评估expression式。 它可以进一步发展,但我相信有一个更好的select,几乎可以有任何需要。