为什么我在Python解释器中得到一个SyntaxError?

时间:2010-03-30 00:05:29

标签: python syntax-error

当我从.py文件中尝试此代码时,此代码有效,但在命令行解释器和空闲时失败。

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

我正在使用python 2.6

3 个答案:

答案 0 :(得分:5)

使用Python 3,print是一个函数,而不是一个语句,因此如果您使用的是Python 3,则需要围绕参数使用括号,如print("continue")中所示。

然而,插入符号指的是比Python 3更早的位置,所以你必须使用Python 2.x。在这种情况下,错误是因为您在交互式解释器中输入此错误,并且需要一些“帮助”来弄清楚您要告诉它的内容。在上一个块之后输入一个空行,以便它可以正确解密缩进,如下所示:

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

答案 1 :(得分:4)

您需要留空一行以关闭except块。 ...表示它仍在尝试将代码放入该块中,即使您喜欢它。这只是交互式解释器的一个怪癖。

答案 2 :(得分:2)

在解释器中尝试这个:

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

print "continue"

重要的是缩进后的空行。我正在使用python 2.6解释器,它会抛出与你相同的语法错误。

这是因为解释器需要用空行分隔的单个块。另外,空白行(两个新的行字符)表示块的结束,并且解释器应该执行它。