13.7 Geplante Sprachelemente 

Die Sprache Python befindet sich in ständiger Entwicklung, und jede neue Version bringt neue Sprachelemente mit sich, die alten Python-Code unter Umständen inkompatibel zur neusten Version des Interpreters machen. Zwar geben sich die Entwickler Mühe, größtmögliche Kompatibilität zu wahren, doch ist durch das bloße Hinzufügen eines Schlüsselwortes schon derjenige Code inkompatibel geworden, der das neue Schlüsselwort als normalen Bezeichner verwendet.
Der Interpreter besitzt eine Art Modus, mit dem sich einige ausgewählte Sprachelemente der kommenden Python-Version bereits mit der aktuellen Version testen lassen. Dies soll den Wechsel von einer Version zur nächsten vereinfachen, da bereits gegen einige neue Features der nächsten Version getestet werden kann, bevor diese herausgegeben wird.
Zum Einbinden eines geplanten Features wird eine import-Anweisung verwendet:
from __future__ import sprachelement
Die Sprachelemente können verwendet werden, als wären sie in einem Modul namens __future__ gekapselt. Beachten Sie aber, dass Sie mit dem Modul __future__ nicht ganz so frei umgehen können, wie Sie das von anderen Modulen her gewohnt sind. Sie dürfen es beispielsweise nur am Anfang einer Programmdatei einbinden. Vor einer solchen import-Anweisung dürfen nur Kommentare, leere Zeilen oder andere future imports stehen.
Die folgende Anweisung erlaubt beispielsweise die Verwendung der sogenannten with-Anweisung. Das ist eine Anweisung, die in Python 2.6 eingeführt werden soll und die das Aufrufen von open- und close-Methoden bestimmter Instanzen, beispielsweise eines Dateiobjekts, automatisiert:
from __future__ import with_statement
Auf die with-Anweisung werden wir im folgenden Abschnitt näher eingehen.
Wenn das Modul __future__ selbst eingebunden wird, so enthält es unter anderem eine Liste namens all_feature_names, die die Namen aller Features enthält, die eingebunden werden können:
>>> import __future__
>>> __future__.all_feature_names
['nested_scopes', 'generators', 'division', 'absolute_import',
'with_statement']
Wir möchten hier nicht näher auf die einzelnen Features und deren Verwendung eingehen, da sie mitunter allzu speziell sind und teilweise aus älteren Python-Versionen stammen. Es ist jedoch immer interessant, ein wenig mit den geplanten Features herumzuspielen und sich selbst ein Bild davon zu machen.