为什么使用from __future__ import print_function会破坏Python2风格的print函数?
为什么使用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日
首先,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__
语句之前。