Sudah ada beberapa jawaban yang bagus, tetapi tidak ada satupun dari mereka yang membahas daftar lengkap apa yang __future__didukung oleh pernyataan tersebut.
Sederhananya, para __future__pernyataan memaksa Python interpreter untuk menggunakan fitur baru dari bahasa.
Fitur yang didukung saat ini adalah sebagai berikut:
nested_scopes
Sebelum Python 2.1, kode berikut akan memunculkan NameError :
def f():
...
def g(value):
...
return g(value-1) + 1
...
The from __future__ import nested_scopesdirektif akan memungkinkan untuk fitur ini diaktifkan.
generators
Fungsi-fungsi generator yang diperkenalkan seperti yang di bawah ini untuk menghemat keadaan antara panggilan fungsi yang berurutan:
def fib():
a, b = 0, 1
while 1:
yield b
a, b = b, a+b
division
Divisi klasik digunakan dalam versi Python 2.x. Berarti bahwa beberapa pernyataan divisi mengembalikan perkiraan divisi yang wajar ("divisi sejati") dan yang lain mengembalikan lantai ("divisi lantai"). Dimulai dengan Python 3.0, pembagian sejati ditentukan oleh x/y, sedangkan pembagian lantai ditentukan oleh x//y.
The from __future__ import divisionpasukan arahan penggunaan Python 3.0 divisi gaya.
absolute_import
Mengizinkan kurung melampirkan banyak importpernyataan. Sebagai contoh:
from Tkinter import (Tk, Frame, Button, Entry, Canvas, Text,
LEFT, DISABLED, NORMAL, RIDGE, END)
Dari pada:
from Tkinter import Tk, Frame, Button, Entry, Canvas, Text, \
LEFT, DISABLED, NORMAL, RIDGE, END
Atau:
from Tkinter import Tk, Frame, Button, Entry, Canvas, Text
from Tkinter import LEFT, DISABLED, NORMAL, RIDGE, END
with_statement
Menambahkan pernyataan withsebagai kata kunci dalam Python untuk menghilangkan kebutuhan akan try/finallypernyataan. Penggunaan umum ini adalah ketika melakukan file I / O seperti:
with open('workfile', 'r') as f:
read_data = f.read()
print_function:
Memaksa penggunaan print()panggilan fungsi gaya kurung Python 3 alih-alih print MESSAGEpernyataan gaya.
unicode_literals
Memperkenalkan sintaks literal untuk bytesobjek. Berarti pernyataan seperti itu bytes('Hello world', 'ascii')dapat dengan mudah dinyatakan sebagai b'Hello world'.
generator_stop
Mengganti penggunaan StopIterationpengecualian yang digunakan di dalam fungsi generator dengan RuntimeErrorpengecualian.
Satu kegunaan lain yang tidak disebutkan di atas adalah bahwa __future__pernyataan tersebut juga mengharuskan penggunaan interpreter Python 2.1+ karena menggunakan versi yang lebih lama akan melempar pengecualian runtime.
Referensi