为什么使用 from__ future__ import print_function 会破坏 Python 2样式的 print?

我是新的编程与 python,我试图打印出一个分隔符和结束,但它仍然给我一个语法错误。

我正在使用 python 2.7。

这是我的代码:

from __future__ import print_function
import sys, os, time


for x in range(0,10):
print x, sep=' ', end=''
time.sleep(1)

这里有一个错误:

$ python2 xy.py
File "xy.py", line 5
print x, sep=' ', end=''
^
SyntaxError: invalid syntax
$
274512 次浏览

首先,from __future__ import print_function需要成为脚本中的第一行代码(除了下面提到的一些异常)。其次,正如其他答案所说,现在必须使用 print作为函数。这就是 from __future__ import print_function的全部意义; 将 print 功能从 Python 3带到 Python 2.6 + 。

from __future__ import print_function


import sys, os, time


for x in range(0,10):
print(x, sep=' ', end='')  # No need for sep here, but okay :)
time.sleep(1)

__future__语句需要位于文件顶部附近,因为它们改变了语言的基本内容,因此编译器需要从一开始就了解它们。来自 文件:

将来语句在编译时被识别和特别处理 Time: 对核心构造的语义的更改通常是 通过生成不同的代码来实现 新特性引入了新的不兼容语法(如新的 保留字) ,在这种情况下,编译器可能需要解析 这样的决定不能推迟到运行时。

文档还提到,在 __future__语句之前只能有模块 docstring、注释、空行和其他将来的语句。