13518219792

建站动态

根据您的个性需求进行定制 先人一步 抢占小程序红利时代

创新互联Python教程:__future__—-Future语句定义

__future__ —- Future 语句定义

源代码: Lib/__future__.py

成都创新互联从2013年成立,先为郏县等服务建站,郏县等地企业,进行企业商务咨询服务。为郏县企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。


__future__ 是一个真正的模块,这主要有 3 个原因:

__future__.py 中的每一条语句都是以下格式的:

 
 
 
 
  1. FeatureName = _Feature(OptionalRelease, MandatoryRelease,
  2. CompilerFlag)

通常 OptionalRelease 要比 MandatoryRelease 小,并且都是和 sys.version_info 格式一致的 5 元素元组。

 
 
 
 
  1. (PY_MAJOR_VERSION, # the 2 in 2.1.0a3; an int
  2. PY_MINOR_VERSION, # the 1; an int
  3. PY_MICRO_VERSION, # the 0; an int
  4. PY_RELEASE_LEVEL, # "alpha", "beta", "candidate" or "final"; string
  5. PY_RELEASE_SERIAL # the 3; an int
  6. )

OptionalRelease 记录了一个特性首次发布时的 python 版本。

MandatoryRelases 还没有发布时,MandatoryRelease 表示该特性会变成语言的一部分的预测时间。

其他情况下,MandatoryRelease 用来记录这个特性是何时成为语言的一部分的。从该版本往后,使用该特性将不需要 future 语句,不过很多人还是会加上对应的 import。

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: “with” 语句

print_function

2.6.0a2

3.0

PEP 3105: print 改为函数

unicode_literals

2.6.0a2

3.0

PEP 3112: Python 3000 中的字节字面值

generator_stop

3.5.0b1

3.7

PEP 479: 在生成器中处理 StopIteration

annotations

3.7.0b1

TBD 1

PEP 563: Postponed evaluation of annotations

1

先前计划在 Python 3.10 中强制使用 from __future__ import annotations ,但Python指导委员会两次决定推迟这一改变( Python 3.10 的公告 ; Python 3.11 的公告 )。目前还没有做出最终决定。参见 PEP 563 和 PEP 649 。

参见

future 语句

编译器怎样处理 future import。


分享文章:创新互联Python教程:__future__—-Future语句定义
标题路径:http://cdbrznjsb.com/article/dhgihdj.html

其他资讯

让你的专属顾问为你服务