Types complexes : List, Dict, Optional, Union
Utilisez correctement les génériques du module typing ainsi que Optional et Union.
Types complexes : List, Dict, Optional, Union est une leçon Python Academy gratuite sur CoddyKit. Ceci est la leçon 2 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Python Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Python Academy comprend 4 leçons au total.
Présentation du module typing
Avant Python 3.9, les types génériques comme List, Dict et Tuple provenaient de typing. Depuis la version 3.9, vous pouvez utiliser directement les types intégrés.
from typing import List, Dict, Tuple, Optional, Union
# Python 3.9+: use list[int], dict[str,int] directly
# Python 3.8-: use typing.List[int], typing.Dict[str,int]List et Sequence
Utilisez list[T] pour les séquences modifiables et Sequence[T] lorsque vous acceptez toute séquence ordonnée (liste, tuple ou chaîne de caractères).
from typing import Sequence
def total(nums: list[int]) -> int:
return sum(nums)
def first(items: Sequence[str]) -> str:
return items[0] # works with list, tuple, strDict et Mapping
Utilisez dict[K,V] pour les dictionnaires modifiables et Mapping[K,V] pour les objets de type dictionnaire en lecture seule.
from typing import Mapping
def lookup(data: Mapping[str, int], key: str) -> int | None:
return data.get(key)
result = lookup({"a": 1, "b": 2}, "a")
print(result) # 1Annotations de Tuple
Longueur fixe : tuple[int, str, float]. Longueur variable : tuple[int, ...].
def point() -> tuple[float, float]:
return (1.0, 2.0)
def first_n(n: int) -> tuple[int, ...]:
return tuple(range(n))
# Named tuple with types:
from typing import NamedTuple
class Point(NamedTuple):
x: float
y: floatOptional[T]
Optional[T] est une abréviation de T | None. C'est toujours le bon choix lorsqu'un paramètre peut être absent.
from typing import Optional
def find_user(user_id: int) -> Optional[dict[str, str]]:
db: dict[int, dict[str, str]] = {
1: {"name": "Alice"}
}
return db.get(user_id)Types Union
Union[X, Y] ou X | Y (3.10+) pour les valeurs qui peuvent être de plusieurs types.
from typing import Union
def stringify(value: Union[int, float, str]) -> str:
return str(value)
# Python 3.10+:
def stringify2(value: int | float | str) -> str:
return str(value)Types Literal
Literal["a","b","c"] limite une valeur à un ensemble précis de littéraux.
from typing import Literal
Mode = Literal["read", "write", "append"]
def open_file(path: str, mode: Mode) -> None:
with open(path, mode):
pass
open_file("data.txt", "read") # ok
# open_file("data.txt", "exec") # mypy errorTypedDict
TypedDict annote la structure de dictionnaires dont chaque clé correspond à un type précis.
from typing import TypedDict
class User(TypedDict):
name: str
age: int
email: str | None
def greet(user: User) -> str:
return f"Hello, {user['name']}"
alice: User = {"name": "Alice", "age": 30, "email": None}Set et FrozenSet
Annotez les ensembles avec set[T] et les ensembles figés avec frozenset[T].
def unique(items: list[int]) -> set[int]:
return set(items)
def allowed_methods() -> frozenset[str]:
return frozenset({"GET", "POST", "DELETE"})Iterable et Iterator
Utilisez Iterable[T] pour tout objet que vous pouvez parcourir en boucle et Iterator[T] pour les objets possédant __next__.
from typing import Iterable, Iterator
def evens(numbers: Iterable[int]) -> Iterator[int]:
return (n for n in numbers if n % 2 == 0)
for n in evens([1, 2, 3, 4, 5]):
print(n) # 2 4Any et NoReturn
Any désactive la vérification des types pour une valeur. NoReturn indique les fonctions qui ne renvoient jamais de valeur, car elles lèvent toujours une exception ou bouclent indéfiniment.
from typing import Any, NoReturn
def accept_all(x: Any) -> None:
print(x)
def crash(msg: str) -> NoReturn:
raise RuntimeError(msg) # never returns normallyVérification rapide
Que signifie Optional[str] ?
Récapitulatif
Utilisez list[T], dict[K,V] et tuple[T,...] pour les collections. Optional[T] = T | None. Union[X,Y] ou X|Y pour plusieurs types. Literal pour des valeurs précises ; TypedDict pour des structures de dictionnaires typées ; Any pour désactiver la vérification.
Questions Fréquemment Posées
La leçon « Types complexes : List, Dict, Optional, Union » est-elle gratuite ?
Oui — le texte complet de « Types complexes : List, Dict, Optional, Union » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Python Academy, passe à CoddyKit PRO. Le cours Python Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Types complexes : List, Dict, Optional, Union » ?
Utilisez correctement les génériques du module typing ainsi que Optional et Union. Tu pratiques Python Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer Python Academy ?
Aucune expérience préalable n'est requise. Python Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 2 sur 4.
Combien de temps prend la leçon « Types complexes : List, Dict, Optional, Union » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon Python Academy ?
Oui. Chaque leçon Python Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Annotations de types de base
- Types complexes : List, Dict, Optional, Union
- TypeVar, classes génériques et Protocol
- Exécuter mypy et corriger les erreurs de types