【问题标题】:eval() does not assign variable at runtimeeval() 在运行时不分配变量
【发布时间】:2016-09-15 11:37:24
【问题描述】:

我使用 eval() 将列表分配给 var:

eval('mylist = [1,2,3]') 

但是当我运行它时,我得到了一个 SyntaxError。它出什么问题了?如果我无法在eval() 中进行赋值,我该如何在运行时分配一个 var。

【问题讨论】:

  • 在一个完全不相关的注释中,您最好使用locals()globals(),或者对于真正大胆的字典。
  • @Snakes and Coffee:现在我已经学会了这两个函数。这是我的情况:我想在一个类中创建一个新成员 var。我该如何实现它?
  • 你可以做setattr(<your object>,'mylist',[1,2,3])

标签: python string eval


【解决方案1】:

对语句使用exec

>>> exec 'lis = [1,2,3]'
>>> lis
[1, 2, 3]

eval 仅适用于表达式,例如 2*24+5

evalexec 如果字符串来自已知来源,则可以,但如果字符串来自未知来源(用户输入),则不要使用它们。

阅读:Be careful with exec and eval in Python

【讨论】:

  • 这不是python 3中的exec('mylist = [1, 2, 3]')
  • 在此处插入强制性“小心exec,这可能很危险”
猜你喜欢
  • 1970-01-01
  • 2020-12-20
  • 2021-03-30
  • 2018-12-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-24
  • 2018-09-22
相关资源
最近更新 更多