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