__future__是python2的概念,其實是為了使用python2時能夠去調用一些在python3中實現的特性
1.absolute_import
from __future__ import absolute_import
這是一個在py2.x中導入3.x的導入特性的語句, 是為了區分出絕對導入和相對導入
聲明為絕對引用。因為在Python 2.4或之前默認是相對引用,即先在本目錄下尋找模塊。但是如果本目錄中有模塊名與系統(sys.path)模塊同名沖突,而想要引用的是系統模塊時,該聲明就能夠起作用了。這樣你調用import string時引入的就是系統的標准string.py,調用from pkg import string來引入當前目錄的string.py
⚠️但是其實最好是不要聲明與系統模塊同名的模塊,如果實在需要同名,最好使用from XXX import XXX來導入
2.division
from __future__ import division
在python3中默認是精確除法,而python2中默認的是截斷式除法,如果在python2想要使用精確除法,就使用這個語句來聲明
在python2中如果沒有聲明,那么除法默認的是截斷式除法,如:
(deeplearning2) userdeMBP:~ user$ python Python 2.7.15 |Anaconda, Inc.| (default, Dec 14 2018, 13:10:39) [GCC 4.2.1 Compatible Clang 4.0.1 (tags/RELEASE_401/final)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> 3/4 0 >>> from __future__ import division >>> 3/4 0.75
當然,如果這個時候你想要使用截斷式除法,為:
>>> 3//4 0
3.print_function
from __future__ import print_function
即在python2中使用python3的print函數
>>> print 'now in python2 it is right' now in python2 it is right >>> print('now in python2 it is right too') now in python2 it is right too >>> from __future__ import print_function >>> print 'now in python2 it is wrong' File "<stdin>", line 1 print 'now in python2 it is wrong' ^ SyntaxError: invalid syntax >>> print('now in python2 it is right') now in python2 it is right
可見導入了后,使用python2的print則會報錯