Retour au cours

type hints : annotations, mypy en douceur

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 mypy pour vérifier

explication détaillée

  • syntaxe : def f(x: int) -> str:
  • Optional[T] pour T | None
  • types génériques : list[int], dict[str, float] (py3.9+)
  • from __future__ import annotations si 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 None explicite
  • 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

  1. annoter 3 fonctions utilitaires et corriger un mismatch volontaire.
  2. écrire un stub simple pour une dépendance externe (bonus).
  3. utiliser typing.TypedDict pour un dict structuré (bonus).