– 未来语句定义 – Python运行时服务(Python教程)(参考资料)
__future__
– 未来语句定义
__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 |
参见
- 未来的陈述
- 如何编译对待未来的进口.
评论被关闭。