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_scopes
direktif 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 division
pasukan arahan penggunaan Python 3.0 divisi gaya.
absolute_import
Mengizinkan kurung melampirkan banyak import
pernyataan. 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 with
sebagai kata kunci dalam Python untuk menghilangkan kebutuhan akan try/finally
pernyataan. 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 MESSAGE
pernyataan gaya.
unicode_literals
Memperkenalkan sintaks literal untuk bytes
objek. Berarti pernyataan seperti itu bytes('Hello world', 'ascii')
dapat dengan mudah dinyatakan sebagai b'Hello world'
.
generator_stop
Mengganti penggunaan StopIteration
pengecualian yang digunakan di dalam fungsi generator dengan RuntimeError
pengecualian.
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