Es gibt bereits einige gute Antworten, aber keine von ihnen enthält eine vollständige Liste dessen, was die __future__
Aussage derzeit unterstützt.
Einfach ausgedrückt, zwingt die __future__
Anweisung Python-Interpreter, neuere Funktionen der Sprache zu verwenden.
Folgende Funktionen werden derzeit unterstützt:
nested_scopes
Vor Python 2.1 löste der folgende Code einen NameError aus :
def f():
...
def g(value):
...
return g(value-1) + 1
...
Die from __future__ import nested_scopes
Direktive ermöglicht die Aktivierung dieser Funktion.
generators
Eingeführte Generatorfunktionen wie die folgende, um den Status zwischen aufeinanderfolgenden Funktionsaufrufen zu speichern:
def fib():
a, b = 0, 1
while 1:
yield b
a, b = b, a+b
division
Die klassische Unterteilung wird in Python 2.x-Versionen verwendet. Dies bedeutet, dass einige Divisionsanweisungen eine vernünftige Annäherung an die Division ("wahre Division") und andere den Floor ("Floor Division") zurückgeben. Ab Python 3.0 wird die wahre Division durch angegeben x/y
, während die Bodenteilung durch angegeben wird x//y
.
Die from __future__ import division
Direktive erzwingt die Verwendung der Python 3.0-Stilteilung.
absolute_import
Ermöglicht es Klammern, mehrere import
Anweisungen einzuschließen . Zum Beispiel:
from Tkinter import (Tk, Frame, Button, Entry, Canvas, Text,
LEFT, DISABLED, NORMAL, RIDGE, END)
Anstatt:
from Tkinter import Tk, Frame, Button, Entry, Canvas, Text, \
LEFT, DISABLED, NORMAL, RIDGE, END
Oder:
from Tkinter import Tk, Frame, Button, Entry, Canvas, Text
from Tkinter import LEFT, DISABLED, NORMAL, RIDGE, END
with_statement
Fügt die Anweisung with
als Schlüsselwort in Python hinzu, um die Notwendigkeit von try/finally
Anweisungen zu beseitigen . Dies wird häufig bei Datei-E / A verwendet, z. B.:
with open('workfile', 'r') as f:
read_data = f.read()
print_function
::
Erzwingt die Verwendung des Funktionsaufrufs im Python 3-Klammerstil print()
anstelle der print MESSAGE
style-Anweisung.
unicode_literals
Führt die Literal-Syntax für das bytes
Objekt ein. Dies bedeutet, dass Aussagen wie bytes('Hello world', 'ascii')
einfach ausgedrückt werden können als b'Hello world'
.
generator_stop
Ersetzt die Verwendung der StopIteration
in Generatorfunktionen verwendeten Ausnahme durch die RuntimeError
Ausnahme.
Eine andere Verwendung, die oben nicht erwähnt wurde, ist, dass die __future__
Anweisung auch die Verwendung von Python 2.1+ -Interpretern erfordert, da die Verwendung einer älteren Version eine Laufzeitausnahme auslöst.
Verweise