Python 2.7.8 在终端(ubuntu 14.04)中打印语句 “Syntax Error: invalid syntax” 但在 vim 上运行良好,为什么?

标签 python

Python 2.7.8 在终端(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

output: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 的普通解析器解析您的文件时,它会看到缩进并知道循环在 sum+=num 之后结束。当 REPL 到达同一行时,它无法知道是否应该有另一个语句,因此它假定还有另一个语句。告诉 REPL 这是一个循环的终端行(或者,更一般地说,任何一组命令的结尾)的方法是输入一个空行。

关于Python 2.7.8 在终端(ubuntu 14.04)中打印语句 “Syntax Error: invalid syntax” 但在 vim 上运行良好,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26390318/

相关文章:

python - Twisted协议(protocol)的分层

python - 如何比较 Char 字符串

python - 为什么 open(True, 'w' ) 会像 sys.stdout.write 一样打印文本?

python - 如何根据列表中的某个值将列表中的值相加?

python - Selenium Chrome Webdriver 进程在本地工作但不在 Heroku 上工作

python - 将 Django 中的 ManyToMany 关系表示为两个多项选择

python - for循环前的数字是什么意思

python - TensorFlow 中的 Seq2Seq(无嵌入)

Python 类 __del__ 方法

python - 使用Python启动WORD文档并直接跳转到特定部分