Python 3.7 – Ausbau der Autobahn

Seite 3: Anzeige von Deprecation-Warnungen in __main__PEP 565

Inhaltsverzeichnis

Wenn bereits heute bekannt ist, dass Python in Zukunft etwas nicht mehr unterstützen wird, gibt es eine Warnung aus (Deprecation Warning), wenn ein Programm die Eigenschaften verwendet. Seit den Python-Versionen 2.7 und 3.2 haben sich die Standardeinstellungen insofern geändert, dass die Warnungen standardmäßig nicht mehr erscheinen. Der Nachteil dabei ist, dass Anwender von Programmen oder Entwicklungswerkzeugen, die in Python geschrieben sind, keine Nachricht darüber bekommen, dass sie eventuell in Zukunft nicht mehr laufen könnten. Beim Einsatz einer neuen Python-Version kann es daher zu einem Fehler mit Abbruch ohne Vorwarnung kommen.

Ab der Version 3.7 wird Python daher diese Warnungen in Programmen (Aufrufe unter __main__) anzeigen. Wenn Entwickler jedoch denselben Quelltext als Modul importieren, erhalten sie weiterhin keine Warnungen.

Die Python-Versionen ab 4.0 werden die Zusatzinformationen von Variablen und Funktionen (variable und function annotations) nicht mehr zum Zeitpunkt der Definition evaluieren. Stattdessen speichern sie die entsprechende Zeichenkette im Dictionary __annotations__. Für statische Type Checker ändert sich nichts, aber Werkzeuge, die die Annotation zur Laufzeit nutzen, müssen diese evaluieren.

Wer die Vorgehensweise in Python 3.7 nutzen will, kann es über das Modul __future__ einschalten:

from __future__ import annotations

Evaluieren zur Laufzeit erledigt beispielsweise:

typing.get_type_hints(obj, globalns=None, localns=None)