为什么使用from __future__ import print_function会破坏Python2风格的print函数?

6 浏览
0 Comments

为什么使用from __future__ import print_function会破坏Python2风格的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
$

admin 更改状态以发布 2023年5月20日
0
0 Comments

首先,from __future__ import print_function 必须是你脚本中的第一行代码(除了下面提到的一些例外情况)。其次,正如其他答案所述,现在你必须将 print 作为一个函数来使用。这就是 from __future__ import print_function 的全部意义; 将 Python 3 中的 print 函数引入 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__ 语句需要放在文件的顶部附近,因为它们会改变语言的基本结构,所以编译器需要从一开始就知道它们。根据文档

未来语句会在编译时被识别和特殊处理:核心构建的语义变化通常是通过生成不同的代码来实现的。它甚至可能是这样的,一项新特性引入了不兼容的语法(如一个新的保留字),在这种情况下编译器可能需要以不同的方式解析模块。这些决策不能推迟到运行时。

文档还提到,只有模块docstring、注释、空行和其他未来语句可以出现在 __future__ 语句之前。

0