繁体   English   中英

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

[英]Python 2.7.8 print statement “Syntax Error: invalid syntax” in terminal (ubuntu 14.04) but running well on vim, why?

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

在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

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

问题是,当以交互方式使用python时,你必须在任何类型的循环或函数之后给出一个空行,否则它认为下一行与此相关。 这意味着在sum+=num你需要在print语句之前留一个空行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM