我们在读代码的时候,总是会看到代码开头会加上from __future__ import *这样的语句。这样的做法的作用就是将新版本的特性引进当前版本中,也就是说我们可以在当前版本使用新版本的一些特性。
例如,在python2.x和python3.x中print的标准写法分别是,
# python 2.x
print "Hello World"
# python 3.x
print("Hello World")
如果你想用python2.x体验python3.x的写法,就可以使用from __future__ import print_function来实现,
# python 2.x
from __future__ import print_function
print("Hello World")
而这时候如果再使用原来python2.x的标准写法就会报错,
# python 2.x
from __future__ import print_function
print "Hello World"
>>> print "Hello World"
File "", line 1
print "Hello World"
^
SyntaxError: invalid syntax
除了print函数,__future__模块还有很多其他功能,
1. 整数除法
# python 2.x
5/2
>>> 2
from __future__ import division
5/2
>>> 2.5
2. with 用法
# python 2.x
try:
with open('test.txt', 'w') as f:
f.write('Hello World')
finally:
f.close()
# 用with替代上述异常检测代码:
from __future__ import with_statement
with open('test.txt', 'w') as f:
f.write('Hi there!')
3. 绝对引入(absolute_import)
绝对引入主要是针对python2.4及之前的版本的,这些版本在引入某一个.py文件时,会首先从当前目录下查找是否有该文件。如果有,则优先引用当前包内的文件。而如果我们想引用python自带的.py文件时,则需要使用,
from __future__ import absolute_import