好的。所以我的问题很简单:如何在Python中使用eval分配变量的值?我试过了,eval('x = 1')但是那行不通。它返回一个SyntaxError。为什么不起作用?
eval('x = 1')
因为x=1是语句,而不是表达式。使用exec运行语句。
x=1
exec
>>> exec('x=1') >>> x 1
顺便说一下,有许多方法可以避免使用exec/,eval如果您只需要分配一个动态名称,例如可以使用字典,setattr函数, 或locals()字典:
eval
setattr
locals()
>>> locals()['y'] = 1 >>> y 1
更新 :尽管上面的代码在REPL中可以使用,但在函数内部则无法使用。如果没有其他问题,请参见在Python中修改本地变量exec。