__future__– 未来语句定义

源代码: Lib / __ future__.py


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

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

__future__.py中的每个语句都是这样的形式:

FeatureName = _Feature(OptionalRelease, MandatoryRelease,                       CompilerFlag)

通常,OptionalRelease小于MandatoryRelease,两者都是与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相同形式的5元组,记录第一个版本,其中功能被接受了

如果MandatoryRelease尚未发生,MandatoryRelease预测该功能将成为该语言的一部分的释放.

Else MandatoryRelease当该特征成为该语言的一部分时的记录;在此之后或之后发布的模块,模块不再需要将来声明来使用相关功能,但可能继续使用此类导入.

MandatoryRelease也可能是None,这意味着有计划的功能得到了回复.

班级的实例_Feature有两种相应的方法,getOptionalRelease()getMandatoryRelease().

CompilerFlag是(bitfield)标志,应该在fourthargument中传递给内置函数compile()以启用特征动态编译的代码。这个标志存放在compiler_flag_Feature实例.

任何功能描述都不会从__future__中删除。自从它在Python 2.1中引入以来,使用这种机制已经找到了进入语言的方法:

功能 可选 强制性 效果
nested_scopes 2.1.0b1 2.2 PEP 227 Statically Nested Scopes
发电机 2.2.0a1 2.3 PEP 255 Simple Generators
division 2.2.0a2 3.0 PEP238 Changing the Division Operator
absolute_import 2.5.0a1 3.0 PEP 328 Imports: Multi-Line and Absolute/Relative
with_statement 2.5。0a1 2.6 PEP 343 The “with” Statement
print_function 2.6.0a2 3.0 PEP 3105 Make print a function
unicode_literals 2.6.0a2 3.0 PEP 3112 Bytes literals in Python 3000
generator_stop 3.5.0b1 3.7 PEP 479 StopIteration handling inside generators
注释 3.7.0b1 4.0 PEP 563 Postponed evaluation of annotations

参见

未来的陈述
如何编译对待未来的进口.

评论被关闭。