在最新的Python版本中,“from __future__ import…”是否有任何影响?

3
我已安装最新版本的Python。 from __future__ import... 语句会有任何影响吗?是否有任何“未来”的版本超越了最新版本,我应该知道 - 也许是对新手不明显的“预发布”或beta版本?
我问这个问题是因为我正在学习 TensorFlow的入门教程,其中告诉我执行from __future__ import print_function。我真的不确定这是在尝试做什么,以及它是否真的在做它 - 没有错误报告...但也没有明显的效果。
我尝试在python会话的第一件事情或按照教程中给出的指令顺序执行from future...语句。似乎没有任何区别...除了让新手进行无谓的追逐!我错过了什么吗?
2个回答

2

Python 3已经具备了print函数,因此当你在使用Python 3时,from __future__ import print_function将不会产生任何影响。正如PEP 236所描述的,在编译时处理future statements而不是在运行时处理,因此该模块应该与冗余的future statement无异。

即使不需要,导入也不会导致任何错误。这使得开发人员可以编写Python模块,跨Python 2和Python 3兼容。


2

从 Python 3.0 中的Future Statements文档中可以看到:

Python 3.0 中支持的功能有 absolute_import、division、generators、unicode_literals、print_function、nested_scopes 和 with_statement。它们都是冗余的,因为它们总是启用的,只是为了向后兼容而保留。

所以如果你使用的是 Python 3,那么不需要使用这个语句。


那篇文档的引用有点误导人。自Python 3.0以来已经添加了一些特性,其中有些还没有变得多余。例如,from __future__ import generator_stop 可以用于使让 StopIteration 异常泄露出生成器函数成为错误 (RuntimeError 将被引发)。这将在Python 3.7中成为标准行为(它很快就会发布,其测试版即将开始)。还有一个来自愚人节玩笑PEP 401的from __future__ import barry_as_FLUFL ,它将 ! = 替换为 <> - Blckknght

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接