我怎样才能在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
只能是eval
expression式。 改用exec
。
更好的是,不要使用,并告诉我们你真正想要做什么,以便我们能够提出一个安全和理智的解决scheme。
x = 0 def assignNewValueToX(v): 全球x x = v 的eval( 'assignNewValueToX(1)') 打印(X)
它的工作原理…python将实际上运行assignNewValueToX能够评估expression式。 它可以进一步发展,但我相信有一个更好的select,几乎可以有任何需要。