好的.所以我的问题很简单:如何在Python中使用eval分配变量的值?我试过了,eval('x = 1')但那不行.它返回一个SyntaxError.为什么这不起作用?
ken*_*ytm 104
因为x=1是陈述,而不是表达.使用exec运行语句.
>>> exec('x=1')
>>> x
1
Run Code Online (Sandbox Code Playgroud)
顺便说一句,有很多方法可以避免使用exec/ eval如果你需要的是一个动态名称来分配,例如你可以使用字典,setattr函数,或者:locals()字典
>>> locals()['y'] = 1
>>> y
1
Run Code Online (Sandbox Code Playgroud)
更新:尽管上面的代码在REPL中有效,但它在函数内部不起作用.如果不可能,请参阅在Python中修改本地区域以获取其他选项exec.
Raf*_*ler 10
你不能,因为变量赋值是一个语句,而不是一个表达式,并且eval只能eval表达式.请exec改用.
更好的是,不要使用它们并告诉我们你真正想要做什么,以便我们能够提出一个安全和理智的解决方案.