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

2024-10-03 04:29:44 发布

您现在位置:Python中文网/ 问答频道 /正文

当我从一个.py文件中尝试时,这段代码可以工作,但是在命令行解释器中失败并且空闲。

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

我正在使用Python2.6


Tags: 文件代码命令行pyopen解释器空闲print
3条回答

对于Python 3,print是一个函数,而不是一个语句,因此如果使用python3,则需要在参数周围加上括号,如print("continue")

然而,插入符号指向的位置比Python3更早,因此必须使用Python2.x。在这种情况下,错误是因为您正在交互式解释器中输入这个,它需要一点“帮助”来找出您试图告诉它的内容。在前一个块之后输入一个空行,以便它能够正确地破译缩进,如下所示:

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

您需要留下一个空行来关闭except块。...表示它仍在尝试将代码放入该块,即使您删除了它。这只是交互式翻译的一个怪癖。

在解释器中试试这个:

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

print "continue"

这里重要的是缩进后的空行。我使用的是Python2.6解释器,它抛出的语法错误与您相同。

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

相关问题 更多 >