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