__future__在Python中用途是什么,如何/何时使用,以及它的工作原理是什么。
__future__在Python中用途是什么,如何/何时使用,以及它的工作原理是什么。
__future__
出现在许多 Python 模块中。即使在阅读 Python 的 __future__ 文档 后,我仍然不明白 __future__
的用途和如何/何时使用它。
有人能给出示例解释吗?
我收到的有关 __future__
基本用法的几个答案似乎是正确的。
但是,我需要了解有关 __future__
工作原理的另一件事:
对我来说最困惑的概念是,当前的 Python 发布包括未来版本的功能,以及如何使用未来版本的功能的程序可以在当前版本的 Python 中成功编译。
我猜测,当前版本打包了未来的潜在功能。但是,只有通过使用 __future__
才能使用这些功能,因为它们不是当前的标准。如果我说得对,请告诉我。
当你执行以下代码时:
from __future__ import whatever
你实际上没有使用一个import
语句,而是一个future statement。你看错了文档,因为你实际上并没有导入那个模块。
Future statements是特殊的--它们改变你的Python模块的解析方式,所以它们必须出现在文件的顶部。它们赋予你的文件中单词或符号新的 -- 或者不同的 -- 含义。来自文档的描述如下:
future statement是编译器的指示,指定一个特定的模块应该使用语法或语义进行编译,这些语法或语义将在Python的指定未来版本中可用。Future statement的目的是为了更轻松地迁移到将语言引入不兼容更改的Python未来版本。它允许在发布新特性之前按模块使用新特性。
如果你真的想要导入__future__
模块,只需执行以下语句:
import __future__
然后像往常一样访问它。
使用__future__
模块,可以逐渐习惯不兼容的更改或引入新关键字的更改。
例如,为了使用上下文管理器,在2.5中,您需要使用from __future__ import with_statement
,因为with
关键字是新的,不能再用作变量名。为了在Python 2.5或更早的版本中将with
作为Python关键字使用,您需要使用上面的导入。
另一个例子是:
from __future__ import division print 8/7 # prints 1.1428571428571428 print 8//7 # prints 1
没有__future__
的情况下,两个print
语句都会打印1
。
内部的区别是,如果没有该导入,/
将映射到__div__()
方法,而使用它时,将使用__truediv__()
。(在任何情况下,//
调用__floordiv__()
。)
关于print
:在3.x中,print
成为一个函数,失去了作为关键字的特殊属性。因此,反过来也是如此。
>>> print >>> from __future__ import print_function >>> print>>>