我在 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
$
我认为使用
__future__
导入应该可以在 sep
语句中使用 end
和 print
,但现在它显然根本不起作用。
为什么不呢?
首先,
from __future__ import print_function
需要是脚本中的第一行代码(除了下面提到的一些例外情况)。其次,正如其他答案所说,您现在必须使用 print
作为函数。这就是from __future__ import print_function
的全部意义;将 print
function 从 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__
语句需要位于文件顶部附近,因为它们改变了语言的基本内容,因此编译器需要从一开始就了解它们。来自文档:
future 语句在编译时会被识别和特殊处理 时间:核心结构语义的改变经常发生 通过生成不同的代码来实现。甚至可能是这样的情况 新功能引入了新的不兼容语法(例如新的 保留字),在这种情况下编译器可能需要解析 模块不同。这样的决定不能推迟到运行时。
文档还提到,在
__future__
语句之前唯一可以出现的是模块文档字符串、注释、空行和其他未来语句。