3

我试图暂时取消一个我传递给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容忍关键字?

4

2 回答 2

9

引用eval 的文档:“表达式参数被解析并评估为 Python 表达式”。那么,pass是一个语句,而不是一个表达式。

于 2013-08-30T00:38:33.833 回答
0

Like nickie said, eval works with expressions, but I wanted to add that eval is good to understand along with repr as talked about here,

Understanding repr( ) function in Python

于 2013-08-30T01:02:30.740 回答