为什么某些内置函数的语法错误消息不同?

时间:2016-12-27 14:51:55

标签: python python-3.x python-3.5 cpython

我最近发现了一些奇怪的东西。我键入了类似

的内容
exec code

我显然遇到了错误。有趣的是错误描述 - SyntaxError: Missing parentheses in call to 'exec'。我还没有发现任何其他能给出类似细节的功能。如果我有例如

eval code

我得到SyntaxError: invalid syntax。我找到的所有用户定义的函数和所有内置函数,例如: G。 minfilter,行为相同。

为什么这些错误消息不一致?

2 个答案:

答案 0 :(得分:1)

由于exec code是Python 2中的有效语法,而不是Python 3中的有效语法,因此该错误消息比一般SyntaxError更详细,因为它非常受欢迎(嗯,很受欢迎当一个人从Python 2过渡到Python 3时,作为exec)的用法。

在Python 3中尝试print string时会遇到确切的错误(只要定义string)。

答案 1 :(得分:1)

错误存在差异,因为evalin 2.x,仍然是in 3.x函数调用。另一方面,execa statement in 2.xmade into a function in 3.x