为什么eval('pass')是一个SyntaxError?

时间:2013-08-30 00:36:00

标签: python eval

我试图暂时清空我传递给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”困扰着我;字符串是一个完整的声明in-of-of-yourself。 eval不能容忍关键字吗?

2 个答案:

答案 0 :(得分:9)

eval's documentation引用:“表达式参数被解析并计算为Python表达式”。然后,pass是一个陈述,而不是表达。

答案 1 :(得分:0)

就像尼基说的那样,eval适用于表达式,但我想补充说evalrepr一起使用是很好的,如此处所述,

Understanding repr( ) function in Python