为什么在Python解释器中出现SyntaxError?

2 投票
4 回答
9168 浏览
提问于 2025-04-15 21:01

这段代码在我从.py文件运行时能正常工作,但在命令行解释器和Idle中却失败了。

>>> try:
...     fsock = open("/bla")
... except IOError:
...     print "Caught"
... print "continue"
  File "<stdin>", line 5
    print "continue"
        ^
SyntaxError: invalid syntax

我使用的是Python 2.6版本。

4 个回答

2

在解释器中试试这个:

try:
    fsock = open("/bla")
except IOError:
    print "Caught"

print "continue"

这里要注意的是缩进后面要有一个空行。我使用的是Python 2.6的解释器,它也会给你一样的语法错误。

这是因为解释器希望每个代码块之间用空行分开。而且这个空行(两个换行符)表示这个代码块结束了,解释器应该执行它。

4

你需要留一个空行来结束except代码块。...表示它还在尝试往那个代码块里放代码,即使你已经把缩进去掉了。这只是交互式解释器的一个小怪癖。

5

在Python 3中,print是一个函数,而不是一个语句,所以你需要在参数周围加上括号,比如说print("continue"),如果你在使用Python 3的话。

不过,光标的位置比在Python 3时要早,所以你应该是在使用Python 2.x。在这种情况下,出现错误是因为你在交互式解释器中输入这个,解释器需要一点“帮助”来理解你想表达的意思。在前一个代码块后面输入一个空行,这样它就能正确理解缩进了,像这样:

>>> try:
...     fsock = open("/bla")
... except IOError:
...     print "Caught"
...
(some output shows here)
>>> print "continue"

撰写回答