les annotations de type rendent les intentions claires et aident les IDE et mypy.
objectifs
- annoter des fonctions et collections
- utiliser
Optional,Iterable,dict[str, int] - exécuter
mypypour vérifier
explication détaillée
- syntaxe :
def f(x: int) -> str: Optional[T]pourT | None- types génériques :
list[int],dict[str, float](py3.9+) from __future__ import annotationssi nécessaire (vieux code)
exemples exécutables
from typing import Optional, Iterable
def first(xs: Iterable[int]) -> Optional[int]:
for x in xs:
return x
return None
def greet(name: str) -> str:
return f"bonjour {name}"
pip install mypy
mypy src/
bonnes pratiques
- commencer par les API publiques
- typer les retours, surtout
Noneexplicite - rester pragmatique : n’annoter que ce qui aide la lecture
pièges courants
- sur-typer au point de nuire à l’évolution
- désactiver mypy partout au lieu de corriger les causes
exercices
- annoter 3 fonctions utilitaires et corriger un mismatch volontaire.
- écrire un stub simple pour une dépendance externe (bonus).
- utiliser
typing.TypedDictpour un dict structuré (bonus).