首页
学习
活动
专区
工具
TVP
发布

__future__

__future__ 是一个真正的模块,并有三个目的:

  • 为了避免混淆分析导入语句的现有工具并期望找到它们导入的模块。
  • 为确保将来的语句在2.1之前的版本中运行,至少会产生运行时异常(导入__future__将失败,因为在2.1之前没有该名称的模块)。
  • 记录何时引入了不兼容的变更,以及何时将变为强制变更。这是可执行文档的一种形式,可以通过导入__future__并检查其内容以编程方式进行检查。

每个陈述__future__.py的形式如下:

FeatureName = _Feature(OptionalRelease, MandatoryRelease,
                       CompilerFlag)

其中,通常OptionalRelease小于MandatoryRelease,并且都是与以下形式相同的5元组sys.version_info

(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记录功能被接受的第一个版本。

MandatoryRelease尚未发生的情况下,MandatoryRelease预测该特征将成为该语言的一部分。

其他强制性发布 记录当该特征成为该语言的一部分时; 在此处或之后的发行版中,模块不再需要将来的语句来使用有问题的功能,但可能会继续使用此类导入。

强制释放 也可能是None,这意味着计划中的功能被删除。

类_Feature的实例有两个相应的方法,getOptionalRelease()和getMandatoryRelease()。

CompilerFlag是应该在内建函数compile()的第四个参数中传递的(位域)标志,以便在动态编译的代码中启用该功能。 该标志存储在_Feature实例的compiler_flag属性中。

不会从中删除任何功能说明__future__。自Python 2.1推出以来,使用这种机制已经找到了进入该语言的途径:

特征

可选

强制性的

影响

nested_scopes

2.1.0b1

2.2

PEP 227:静态嵌套示波器

generators

2.2.0a1

2.3

PEP 255:简单的发电机

division

2.2.0a2

3.0

PEP 238:更改部门操作员

absolute_import

2.5.0a1

3.0

PEP 328:进口:多线和绝对/相对

with_statement

2.5.0a1

2.6

PEP 343:“带”声明

print_function

2.6.0a2

3.0

PEP 3105:使打印功能

unicode_literals

2.6.0a2

3.0

PEP 3112:Python 3000中的字节文字

扩展内容

未来的陈述编译器如何处理未来的进口。

扫码关注腾讯云开发者

领取腾讯云代金券