Les annotations de type (type hints) sont un moyen d'indiquer explicitement les types attendus des variables, des arguments et des valeurs de retour des fonctions. La syntaxe est apparue dans Python 3.5 (PEP 484). Les annotations sont statiques — l'interpréteur les ignore pendant l'exécution, elles sont destinées aux outils d'analyse de code (mypy, Pyright, IDE).
Les annotations aident à :
Exemple :
def add(x: int, y: int) -> int: return x + y def show(items: list[str]) -> None: print(', '.join(items))
Question fréquente :
Les annotations de type peuvent-elles d'une manière ou d'une autre influencer la performance ou la correction de l'exécution du code ?
Réponse : Non, les annotations de type n'affectent ni la performance ni la fonction du programme à l'exécution. Ce ne sont que des métadonnées. Mais elles peuvent être utilisées par des outils ou des frameworks tiers pour le contrôle et la validation des types (par exemple, dans FastAPI).
Histoire
Dans le projet, de grandes structures dynamiques étaient annotées via list, dict sans préciser les éléments (par exemple : def f(x: list): ...). En conséquence, les analyseurs statiques ne pouvaient pas détecter les erreurs de type parce que l'annotation ne précisait pas ce qui se trouvait à l'intérieur.
Histoire
On a utilisé from __future__ import annotations pour supporter l'évaluation reportée dans Python 3.7, mais on a oublié cela dans une partie du projet. Cela a conduit à des références avant (forward references) provoquant des erreurs lors de l'analyse statique et à l'exécution en utilisant certains frameworks.
Histoire
Dans un grand projet, le type de la valeur de retour a été mal défini : on a oublié d'importer Optional, ce qui a provoqué une erreur de mypy et plusieurs problèmes non documentés dans l'IDE, qui perturbaient l'autocomplétion et la mise en surbrillance des erreurs.