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