为什么 eval('pass') 是语法错误?

问题描述 投票:0回答:2

我试图暂时清空我传递给

eval
的字符串而不执行任何操作(我没有删除它,因为保留顺序对于我的 hacky 配置文件脚本很重要),并且当我给出它时有点恼火
 'pass'
它倾倒在我身上,同样带有一个空字符串或一些等效的无所事事的语句。

>>> eval('pass')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<string>", line 1
    pass
       ^
SyntaxError: unexpected EOF while parsing

我最终只是喂了它

None
,但为什么是语法错误? “意外的EOF”让我困惑;该字符串本身就是一个完整的语句。
eval
不能容忍关键字吗?

python eval
2个回答
9
投票

引用eval的文档

表达式参数被解析并计算为Python表达式。

那么,

pass
是一个陈述,而不是一个表达式。


0
投票

就像 nickie 所说,

eval
适用于表达式,但我想补充一点,
eval
与此处讨论的
repr
一起很好理解,

理解Python中的repr()函数

© www.soinside.com 2019 - 2024. All rights reserved.