Python每个新的版本出来都会有一些新的特性或者对当前新特性进行增强,但是某些变化很可能会影响到当前版本的功能。为了让使用Python的同胞们为新的特性做好准备,Python提供了__future__模块。
我们可以通过 from __future__ import <featureName> 导入__future__模块中的新特性。
下面我就用Python 2.6做例子,简单说下__future__的结构
我们找到安装目录下__future__.py文件,可以看到每个feature 都有三个参数,如division:
- division = _Feature((2, 2, 0, "alpha", 2),
- (3, 0, 0, "alpha", 0),
- CO_FUTURE_DIVISION)
上面division的新特性就是为整数相除得出更精确的值,在python2.6版本中,如果print 10/3. output为3。但是如果from __future__ import division之后再print 10/3,则会输出3.33333333333。
第一个参数optionalReleases: division的OptionalReleases为2.2.0 , 表示division的新特性在2.2.0版本已经具备了,但是并不是默认就可以使用的,我们必须要在导入__future__模块中该功能后才能使用。
第二个参数MandatoryReleases:division的MandatoryReleases为3.0.0,这表示division的新特性已经成功3.0.0版本的一部分了,我们不需要使用导入__future__模块中的division就可以使用division的新功能了。如果MandatoryReleases参数为None表示该新特性被废除了。