__future__是一个python模块。添加它是为了避免混淆现有的工具,这些工具分析导入语句并希望找到它们正在导入的模块。它是在2.1版本中添加的,因此如果在2.1版本之前使用__future__,导入将失败。
现在看看这段代码:
>>> from __future__ import division
>>> division
_Feature((2, 2, 0, 'alpha', 2), (3, 0, 0, 'alpha', 0), 131072)
以_Feature(OptionalRelease, MandatoryRelease, CompilerFlag)格式返回的除法。OptionalRelease和MandatoryRelease都是5元组,形式为:
(
PY_MAJOR_VERSION, # the 2 in 2.1.0a3; an int
PY_MINOR_VERSION, # the 1; an int
PY_MICRO_VERSION, # the 0; an int
PY_RELEASE_LEVEL, # "alpha", "beta", "candidate" or "final"; string
PY_RELEASE_SERIAL # the 3; an int
)
所以在我们的例子中,OptionalRelease是2.2.0a2, MandatoryRelease是3.0.0a0。
OptionalRelease告诉我们特性被接受的第一个版本。
MandatoryRelease预测该特性何时成为语言的一部分或显示该特性何时成为语言的一部分;在这之后的版本中,模块不再需要future语句来使用相关特性,但可以继续使用这样的导入。如果MandatoryRelease为None,则计划的特性将被删除。
CompilerFlag是(位字段)标志,应该在第四个参数中传递给内置函数compile()以启用动态编译代码中的特性。该标志存储在_Feature实例的compiler_flag属性中。