相同的错误,但不同的错误报告。为什么?

Same mistake but different error report. Why?

提问人:user1810077 提问时间:11/9/2012 最后编辑:user1810077 更新时间:11/10/2012 访问量:3667

问:

为什么 Python 出于相同的原因报告不同的错误,即具有 1 行和 2 行代码的程序?

我的意思是:

print(1

Error: unexpected EOF while parsing

a = 1+1
print(1

Error: invalid syntax

同样的问题 - 但错误消息不同 - 原因?

sys.version_info(major=3, minor=2, micro=0, releaselevel='final',serial=0)

python 错误报告

评论

4赞 11/9/2012
这些是什么样的提示:?或者您是在谈论您执行的文件中的 Python 代码?如何?->
0赞 user1810077 11/9/2012
->只是在那里显示代码的起始行,对不起。第一种是 1 行代码的编程,第二种是 2 行代码的编程。
3赞 Shawn Chin 11/9/2012
我似乎无法重现第一个错误。您使用的是哪个版本的 Python?
0赞 user1810077 11/9/2012
我认为是 Python3 - sys.version_info(major=3, minor=2, micro=0, releaselevel='final', serial=0)
2赞 Adam Rosenfield 11/9/2012
谁在乎啊?这是无效的语法,无论哪种方式,它都会准确地指出错误所在。语法错误报告方式的细微差别不是您应该依赖的行为,并且可能会随着每个版本而改变。

答:

2赞 Carlos Henrique Cano 11/9/2012 #1

在第一种情况下,python 正在“寻找”它的第一行/命令。 程序的最小值至少是一个语句。所以它抱怨提前终止。

所以第一个错误 EOF(文件末尾)意味着: “嘿,我本来以为至少有一个命令,突然电话就结束了......”“你确定程序已经完成吗?”

运行了第二个错误,因此编译器“知道”这是一个程序。

错误是不同的,但它意味着:

“嘿,我现在你在这个位置上有错误,你能修复你的 sintaxe 吗”?

我希望我的非学术方式不会分散你的注意力:)

评论

1赞 user1810077 11/10/2012
2Carlos:这是否意味着,除了执行 1 行程序之外,我在任何其他情况下都没有机会遇到“EOF”错误?
0赞 Carlos Henrique Cano 11/10/2012
当您确实具有“流量控制”(例如读取 tcp 套接字或文件)并且突然“中断”时,您可能会遇到相同的错误。因此,当您处理互联网套接字时,它会变得很奇怪,并且您收到此错误......你觉得:'什么??没有文件..',但在你理解了“文件”的含义之后。令人讨厌的笔记:大型机 z/OS 仍然使用 TAPE 面额来表示磁盘和卷......