__future__
模塊是為了在當前版本python中使用新python3.x特性而加入的語法。
這個模塊裡包含了(對於當前版本而言)沒有加入當前版本python的新特性。
使用方法如下,在文件開頭書寫下面語句,否則會起SyntaxError
:
from __future__ import *
python的新特性會在某一個版本之後被強制地加入發行版本,但是沒被強制加入發行版本的特性是新舊兼容的。這個會在下文中提到。一些經典的特性見下表:
想查看有哪些新特性,可以使用下面的代碼:
# python 3.8.12
>>> import __future__
>>> print(__future__.all_feature_names)
['nested_scopes', 'generators', 'division', 'absolute_import', 'with_statement', 'print_function', 'unicode_literals', 'barry_as_FLUFL', 'generator_stop', 'annotations']
下面是幾個例子:
print_function
在python2中,print
函數長這樣:
# python2
print "hello world"
但是在python3中,print
函數長這樣:
# python3
print("hello world")
在python2中,兩種寫法都是可以直接用的:
# python2
>>> print "hello world"
hello world
>>> print("hello world")
hello world
但是一旦使用了from __future__ import print_function
語句,python2的語法就不再生效:
from __future__ import print_function
>>> print("hello world")
hello world
>>> print "hello world"
File "/home/0a506b14e8975b8a788846c5356abb76.py", line 4
print "Hello world"
^
SyntaxError: invalid syntax
division
python2中的除法/
是地板除,即除數向下取整。但是python3裡的除法是精確除法:
# python2
>>> print 7 / 5
1
>>> print -7 / 5
-2
# In below python 2.x code, division works
# same as Python 3.x because we use __future__
>>> from __future__ import division
>>> print 7 / 5
1.4
>>> print -7 / 5
-1.4