Python 2.7.8 print语句“语法错误:终止语法无效”(14.04)但在vim上运行良好,为什么?
以下程序打印平方和,首先我尝试在终端上运行此问题,它提供" 语法错误:语法无效&#34 ;但是当在 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
在vim上
$ vim for.py
squares= [1, 4, 9, 16]
sum=0
for num in squares:
sum+=num
print sum
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
答案 0 :(得分:5)
REPL(read-evaluate-print-loop)无法预测下一行,看看循环是否与普通解析器的结束方式相同。换句话说,当python的普通解析器解析你的文件时,它会看到dedent并知道循环在sum+=num
之后结束。当REPL到达同一行时,它无法知道是否应该有另一个语句,因此它假定还有另一个语句。告诉REPL这是一个循环的终端行(或者更一般地说,任何一组命令的结束)的方法是输入一个空行。
答案 1 :(得分:4)
问题是,当以交互方式使用python时,你必须在任何类型的循环或函数之后给出一个空行,否则它认为下一行与此相关。这意味着在sum+=num
之后,您需要在打印语句之前留空行。