Type-annotaties (type hints) zijn een manier om expliciet de verwachte types voor variabelen, argumenten en retourwaarden van functies aan te geven. De syntaxis verscheen in Python 3.5 (PEP 484). Annotaties zijn statisch — de interpreter negeert ze tijdens de uitvoering, ze zijn bedoeld voor code-analysetools (mypy, Pyright, IDE).
Annotaties helpen:
Voorbeeld:
def add(x: int, y: int) -> int: return x + y def show(items: list[str]) -> None: print(', '.join(items))
Veelgestelde vraag:
Kunnen type-annotaties op de een of andere manier de prestaties of de juistheid van de code-uitvoering beïnvloeden?
Antwoord: Nee, type-annotaties beïnvloeden noch de prestaties, noch de functionaliteit van het programma tijdens runtime. Het zijn slechts metadata. Maar ze kunnen worden gebruikt door externe tools of frameworks voor typecontrole en validatie (bijvoorbeeld in FastAPI).
Verhaal
In een project werden grote dynamische structuren gemarkeerd met types via list, dict zonder de elementen verder te specificeren (bijvoorbeeld: def f(x: list): ...). Hierdoor konden statische analysetools typefouten niet ontdekken, omdat uit de annotatie niet duidelijk was wat erin zat.
Verhaal
Er werd from __future__ import annotations gebruikt voor ondersteuning van postponed evaluation in Python 3.7, maar dit werd op een bepaald deel van het project vergeten. Dit leidde ertoe dat forward references fouten veroorzaakten tijdens statische analyse en runtime bij het gebruik van bepaalde frameworks.
Verhaal
In een groot project werd het type van de retourwaarde verkeerd ingesteld: men vergat Optional te importeren, kreeg een fout van mypy en een reeks niet gedocumenteerde problemen in de IDE, die de autocompletion en foutmarkering bemoeilijkten.