已经有一些不错的答案,但是都没有一个完整的清单 __future__
语句当前支持。
简而言之,该__future__
语句强制Python解释器使用该语言的更新功能。
当前支持的功能如下:
nested_scopes
在Python 2.1之前,以下代码将引发NameError:
def f():
...
def g(value):
...
return g(value-1) + 1
...
该from __future__ import nested_scopes
指令将允许启用此功能。
generators
引入了以下生成器函数,以在连续的函数调用之间保存状态:
def fib():
a, b = 0, 1
while 1:
yield b
a, b = b, a+b
division
在Python 2.x版本中使用经典除法。这意味着某些除法语句返回合理的除法近似值(“真除法”),而另一些则返回下限(“地板除法”)。从Python 3.0开始,真正的除法由指定x/y
,而场除由指定x//y
。
该from __future__ import division
指令强制使用Python 3.0样式划分。
absolute_import
允许用括号括起多个import
语句。例如:
from Tkinter import (Tk, Frame, Button, Entry, Canvas, Text,
LEFT, DISABLED, NORMAL, RIDGE, END)
代替:
from Tkinter import Tk, Frame, Button, Entry, Canvas, Text, \
LEFT, DISABLED, NORMAL, RIDGE, END
要么:
from Tkinter import Tk, Frame, Button, Entry, Canvas, Text
from Tkinter import LEFT, DISABLED, NORMAL, RIDGE, END
with_statement
with
在Python中将该语句作为关键字添加,以消除对try/finally
语句的需要。在执行文件I / O时,通常的用法是:
with open('workfile', 'r') as f:
read_data = f.read()
print_function
:
强制使用Python 3括号样式print()
函数调用代替print MESSAGE
style语句。
unicode_literals
介绍bytes
对象的文字语法。意味着诸如之类的陈述bytes('Hello world', 'ascii')
可以简单地表达为b'Hello world'
。
generator_stop
将StopIteration
生成器函数内部使用的异常的使用替换为RuntimeError
异常。
上面没有提到的另一种用法是该__future__
语句还需要使用Python 2.1+解释器,因为使用较旧的版本将引发运行时异常。
参考文献