为什么Python解释器中会出现语法错误?

为什么Python解释器中会出现语法错误?,python,syntax-error,Python,Syntax Error,当我从.py文件中尝试时,该代码可以工作,但在命令行解释器中失败并处于空闲状态 >>> try: ... fsock = open("/bla") ... except IOError: ... print "Caught" ... print "continue" File "<stdin>", line 5 print "continue" ^ SyntaxError: invalid syntax >>试试: ..

当我从.py文件中尝试时,该代码可以工作,但在命令行解释器中失败并处于空闲状态

>>> try:
...     fsock = open("/bla")
... except IOError:
...     print "Caught"
... print "continue"
  File "<stdin>", line 5
    print "continue"
        ^
SyntaxError: invalid syntax
>>试试:
...     fsock=打开(“/bla”)
... 除IOError外:
...     打印“捕获”
... 打印“继续”
文件“”,第5行
打印“继续”
^
SyntaxError:无效语法

我将Python2.6与Python3一起使用,
print
是一个函数,而不是一个语句,因此如果使用Python3,则需要在参数周围加括号,如在
print(“continue”)

但是,插入符号指向的位置比Python3更早,因此必须使用Python2.x。在这种情况下,错误是因为您在交互式解释器中输入了这个,它需要一些“帮助”来弄清楚您试图告诉它什么。在上一个块后输入一个空行,以便正确地破译缩进,如下所示:

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

您需要留下一个空行来关闭
块,但
块除外。
指示它仍在尝试将代码放入该块,即使您已删除它。这只是交互式口译员的一个怪癖

在解释器中试试这个:

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

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


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

您使用的是什么版本的Python?更新了这个问题。python 2.6.请注意,在打开文件(
,打开(文件名,模式)为f:
)时,您总是希望使用上下文管理器。此技巧似乎不适用于函数定义和嵌套缩进<代码>定义f1():返回1#此处的一行定义f2():返回2