Python eval()在运行时不分配变量
我使用Python eval()在运行时不分配变量,python,string,eval,Python,String,Eval,我使用eval()将列表分配给变量: eval('mylist = [1,2,3]') 但当我运行它时,我得到了一个SyntaxError。怎么了?如果我不能在eval()中进行赋值,那么我如何在运行时分配变量 对语句使用exec: >>> exec 'lis = [1,2,3]' >>> lis [1, 2, 3] eval仅适用于表达式,如2*2、4+5等 如果字符串来自已知来源,则eval和exec可以使用,但如果字符串来自未知来源(用户输入),则
eval()
将列表分配给变量:
eval('mylist = [1,2,3]')
但当我运行它时,我得到了一个SyntaxError。怎么了?如果我不能在
eval()
中进行赋值,那么我如何在运行时分配变量 对语句使用exec
:
>>> exec 'lis = [1,2,3]'
>>> lis
[1, 2, 3]
eval
仅适用于表达式,如2*2
、4+5
等
如果字符串来自已知来源,则eval
和exec
可以使用,但如果字符串来自未知来源(用户输入),则不要使用它们
阅读:这并不是
exec('mylist=[1,2,3]')
在python 3中插入强制性的“小心exec
,它可能会很危险”在这里有一个完全无关的注释,您可能最好使用locals()
,globals()
,或者对于真正大胆的,字典。@蛇和咖啡:现在我已经学会了这两个功能。我的情况如下:我想在类中创建一个新的成员变量。我如何实现它?你可以做setattr(,'mylist',[1,2,3])
@SnakesandCoffee更好,
将是self
,如果这是在\uu init\uuu
中