Typannotationen (Type Hints) sind eine Möglichkeit, um die erwarteten Typen von Variablen, Argumenten und Rückgabewerten von Funktionen explizit anzugeben. Die Syntax wurde in Python 3.5 (PEP 484) eingeführt. Die Annotationen sind statisch – der Interpreter ignoriert sie während der Ausführung, sie sind für Code-Analysetools (mypy, Pyright, IDE) gedacht.
Typannotationen helfen:
Beispiel:
def add(x: int, y: int) -> int: return x + y def show(items: list[str]) -> None: print(', '.join(items))
Häufige Frage:
Können Typannotationen irgendwie die Leistung oder die Korrektheit der Ausführung des Codes beeinflussen?
Antwort: Nein, Typannotationen haben keinen Einfluss auf die Leistung oder die Funktionsweise des Programms zur Laufzeit. Sie sind lediglich Metadaten. Aber sie können von Drittanbietertools oder Frameworks zur Typkontrolle und -validierung verwendet werden (zum Beispiel in FastAPI).
Geschichte
In einem Projekt wurden große dynamische Strukturen mit list, dict typisiert, ohne die Elemente zu präzisieren (zum Beispiel: def f(x: list): ...). Infolgedessen konnten statische Analysetools keine Typfehler identifizieren, da aus der Annotation nicht klar war, was darin enthalten ist.
Geschichte
Es wurde from __future__ import annotations verwendet, um die verzögerte Auswertung in Python 3.7 zu unterstützen, aber in einem Teil des Projekts wurde dies vergessen. Dies führte dazu, dass Forward References Fehler bei der statischen Analyse und zur Laufzeit bei der Verwendung bestimmter Frameworks verursachten.
Geschichte
In einem großen Projekt wurde der Rückgabetyp nicht korrekt angegeben: Optional wurde vergessen zu importieren, was zu einem Fehler von mypy und einer Reihe von undokumentierten Problemen in der IDE führte, die die Autovervollständigung und die Fehlerkennung beeinträchtigten.