Python 2.7.8打印语句"语法错误:无效语法"在终端(ubuntu 14.04)但在vim上运行良好,为什么?

4 python

Python 2.7.8 print语句"语法错误:无效语法"在终端(14.04)但在vim上运行良好,为什么?

下面的程序打印平方和,首先我尝试在终端上运行此问题它给出" 语法错误:无效语法 ",但在vim编辑器上复制相同的代码并在终端python for.py上运行(文件的名称)是for.py),它没有给出任何错误,请解释其背后的原因.

在直接在终端上运行

Type "help", "copyright", "credits" or "license" for more information.
>>> squares= [1, 4, 9, 16]
>>> sum=0
>>> for num in squares:
...     sum+=num
... print sum

File "<stdin>", line 3
  print sum
    ^
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)

在vim

$ vim for.py
squares= [1, 4, 9, 16]
sum=0
for num in squares:
   sum+=num
print sum
Run Code Online (Sandbox Code Playgroud)

python for.py

输出:30#正确运行

在得到@mgilson和@ ohope5的建议后,工作表示感谢

Type "help", "copyright", "credits" or "license" for more information.
>>> squares=[1, 4, 9, 16]
>>> sum=0
>>> for num in squares:
...     sum+=num
... 
>>> print sum
30
Run Code Online (Sandbox Code Playgroud)

mgi*_*son 5

REPL(读取 - 评估 - 打印 - 循环)无法预测下一行,以查看循环是否以与普通解析器相同的方式结束.换句话说,当python的普通解析器解析你的文件时,它会看到dedent并知道循环结束sum+=num.当REPL到达同一行时,它无法知道是否应该有另一个语句,因此它假定还有另一个语句.告诉REPL这是一个循环的终端线(或者更一般地说,任何一组命令的结束)的方法是输入一个空行.