Python中__future__用于什么,如何/何时使用它,以及它是如何工作的

2022-09-05 01:18:06

__future__经常出现在 Python 模块中。我不明白什么是用的以及如何/何时使用它,即使在阅读了Python的__future__文档之后。__future__

任何人都可以用例子解释吗?

关于我收到的基本用法的一些答案似乎是正确的。__future__

但是,关于工作原理,我需要了解另一件事:__future__

对我来说,最令人困惑的概念是当前python版本如何包含未来版本的功能,以及如何在当前版本的Python中成功编译使用未来版本中功能的程序。

我猜当前版本已经打包了未来的潜在功能。但是,这些功能只能通过 使用,因为它们不是当前标准。让我知道我是否正确。__future__


答案 1

通过模块的包含,您可以慢慢习惯于不兼容的更改或引入新关键字的更改。__future__

例如,为了使用上下文管理器,您必须在2.5中执行此操作,因为关键字是新的,不应再用作变量名称。为了在Python 2.5或更早版本中用作Python关键字,您需要使用上面的导入。from __future__ import with_statementwithwith

另一个例子是

from __future__ import division
print 8/7  # prints 1.1428571428571428
print 8//7 # prints 1

如果没有这些东西,两个语句都会打印 。__future__print1

内部区别在于,如果没有该导入,则映射到方法,而使用该方法。(无论如何,请调用 。/__div__()__truediv__()//__floordiv__()

Apropos :成为3.x中的函数,失去其作为关键字的特殊属性。所以情况恰恰相反。printprint

>>> print

>>> from __future__ import print_function
>>> print
<built-in function print>
>>>

答案 2

当您这样做时

from __future__ import whatever

您实际上使用的不是语句,而是将来的语句。您阅读了错误的文档,因为您实际上并没有导入该模块。import

未来的语句是特殊的 - 它们改变了Python模块的解析方式,这就是为什么它们必须位于文件的顶部。它们为文件中的单词或符号赋予新的或不同的含义。从文档中:

future 语句是编译器的指令,即应使用将在指定的未来 Python 版本中可用的语法或语义来编译特定模块。future 语句旨在简化向未来版本的 Python 的迁移,这些版本会对语言进行不兼容的更改。它允许在功能成为标准的版本之前基于每个模块使用新功能。

如果您真的想导入模块,只需执行__future__

import __future__

然后像往常一样访问它。