Ci sono già delle ottime risposte, ma nessuna di esse affronta un elenco completo di ciò che __future__ dichiarazione attualmente supporta.
In parole povere, la __future__dichiarazione obbliga gli interpreti Python a utilizzare le nuove funzionalità del linguaggio.
Le funzionalità attualmente supportate sono le seguenti:
nested_scopes
Prima di Python 2.1, il codice seguente generava un NameError :
def f():
...
def g(value):
...
return g(value-1) + 1
...
La from __future__ import nested_scopesdirettiva consentirà di abilitare questa funzione.
generators
Introdotte funzioni del generatore come quella qui sotto per salvare lo stato tra successive chiamate di funzione:
def fib():
a, b = 0, 1
while 1:
yield b
a, b = b, a+b
division
La divisione classica viene utilizzata nelle versioni Python 2.x. Ciò significa che alcune dichiarazioni di divisione restituiscono una ragionevole approssimazione della divisione ("divisione vera") e altre restituiscono il piano ("divisione piano"). A partire da Python 3.0, la divisione vera è specificata da x/y, mentre la divisione pavimento è specificata dax//y .
La from __future__ import divisiondirettiva impone l'uso della divisione di stile Python 3.0.
absolute_import
Consente alla parentesi di racchiudere più importistruzioni. Per esempio:
from Tkinter import (Tk, Frame, Button, Entry, Canvas, Text,
LEFT, DISABLED, NORMAL, RIDGE, END)
Invece di:
from Tkinter import Tk, Frame, Button, Entry, Canvas, Text, \
LEFT, DISABLED, NORMAL, RIDGE, END
O:
from Tkinter import Tk, Frame, Button, Entry, Canvas, Text
from Tkinter import LEFT, DISABLED, NORMAL, RIDGE, END
with_statement
Aggiunge l'istruzione withcome parola chiave in Python per eliminare la necessità di try/finallyistruzioni. Gli usi comuni di questo sono quando si esegue l'I / O di file come:
with open('workfile', 'r') as f:
read_data = f.read()
print_function:
Forza l'uso della print()chiamata di funzione in stile parentesi di Python 3 invece dell'istruzione di print MESSAGEstile.
unicode_literals
Introduce la sintassi letterale per l' bytesoggetto. Significa che dichiarazioni come quelle bytes('Hello world', 'ascii')possono essere semplicemente espresse come b'Hello world'.
generator_stop
Sostituisce l'uso StopIterationdell'eccezione utilizzata all'interno delle funzioni del generatore con l' RuntimeErroreccezione.
Un altro uso non menzionato sopra è che l' __future__istruzione richiede anche l'uso di interpreti Python 2.1+ poiché l'utilizzo di una versione precedente genererà un'eccezione di runtime.
Riferimenti