Il existe déjà d'excellentes réponses, mais aucune d'entre elles n'aborde une liste complète de __future__ déclaration prend actuellement en charge.
En termes simples, l' __future__instruction force les interprètes Python à utiliser les nouvelles fonctionnalités du langage.
Les fonctionnalités qu'il prend actuellement en charge sont les suivantes:
nested_scopes
Avant Python 2.1, le code suivant déclencherait une erreur NameError :
def f():
...
def g(value):
...
return g(value-1) + 1
...
La from __future__ import nested_scopesdirective permettra d'activer cette fonctionnalité.
generators
Introduction de fonctions de générateur telles que celle ci-dessous pour enregistrer l'état entre les appels de fonction successifs:
def fib():
a, b = 0, 1
while 1:
yield b
a, b = b, a+b
division
La division classique est utilisée dans les versions Python 2.x. Cela signifie que certaines déclarations de division renvoient une approximation raisonnable de la division ("vraie division") et d'autres renvoient le plancher ("division de l'étage"). À partir de Python 3.0, la véritable division est spécifiée par x/y, tandis que la division au sol est spécifiée par x//y.
La from __future__ import divisiondirective force l'utilisation de la division de style Python 3.0.
absolute_import
Permet aux parenthèses de joindre plusieurs importinstructions. Par exemple:
from Tkinter import (Tk, Frame, Button, Entry, Canvas, Text,
LEFT, DISABLED, NORMAL, RIDGE, END)
Au lieu de:
from Tkinter import Tk, Frame, Button, Entry, Canvas, Text, \
LEFT, DISABLED, NORMAL, RIDGE, END
Ou:
from Tkinter import Tk, Frame, Button, Entry, Canvas, Text
from Tkinter import LEFT, DISABLED, NORMAL, RIDGE, END
with_statement
Ajoute l'instruction en withtant que mot clé en Python pour éliminer le besoin d' try/finallyinstructions. Les utilisations courantes de ceci sont lors des E / S de fichiers telles que:
with open('workfile', 'r') as f:
read_data = f.read()
print_function:
Force l'utilisation de l' print()appel de fonction de style parenthèse Python 3 au lieu de l' print MESSAGEinstruction de style.
unicode_literals
Présente la syntaxe littérale de l' bytesobjet. Cela signifie que des déclarations telles que bytes('Hello world', 'ascii')peuvent être simplement exprimées par b'Hello world'.
generator_stop
Remplace l'utilisation de l' StopIterationexception utilisée dans les fonctions du générateur par l' RuntimeErrorexception.
Une autre utilisation non mentionnée ci-dessus est que l' __future__instruction nécessite également l'utilisation d'interpréteurs Python 2.1+, car l'utilisation d'une ancienne version générera une exception d'exécution.
Références