问题:为什么从__future__ import print_function使用会破坏Python2样式的打印?[关闭]
我是使用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
$
回答 0
首先,from __future__ import print_function
必须是脚本中的第一行代码(除了下面提到的一些exceptions)。第二,正如其他答案所说,您现在必须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__
语句必须位于文件的顶部,因为它们会更改语言的基本内容,因此编译器需要从一开始就了解它们。从文档中:
将来的语句在编译时会得到特殊识别和处理:更改核心结构的语义通常是通过生成不同的代码来实现的。甚至可能是新功能引入了新的不兼容语法(例如新的保留字)的情况,在这种情况下,编译器可能需要以不同的方式解析模块。直到运行时才能推迟此类决策。
该文档还提到,__future__
语句之前唯一可以做的事情就是模块文档字符串,注释,空白行和其他将来的语句。