Conseils de type Python : typage statique et annotations

Apprenez à écrire des astuces de type en Python. Améliorez la qualité du code, activez la saisie semi-automatique et exploitez mypy pour l'analyse statique du code.

Essayez dans l'éditeur

Aperçu

Python est historiquement un langage typé dynamiquement, ce qui signifie que l'interpréteur déduit des types de variables au moment de l'exécution, offrant ainsi aux développeurs rapidité et flexibilité. Cependant, à mesure que les bases de code se développent, cette flexibilité typée dynamiquement peut conduire à des bogues d'exécution déroutants, tels que la transmission d'une liste à une fonction qui attend une chaîne. Pour combler cette lacune,Python 3.5 a introduit des indices de type (annotations de type), permettant aux développeurs de documenter explicitement les types attendus dans le code.

Les indications de type n'affectent pas la façon dont Python exécute votre code ; l'interpréteur les ignore complètement au moment de l'exécution. Au lieu de cela, leur valeur réside dans l’analyse statique et les outils IDE. En ajoutant des annotations de type aux variables, aux paramètres de fonction et aux types de retour, votre IDE peut fournir une saisie semi-automatique précise et signaler instantanément les erreurs de non-concordance de type. Des outils comme « mypy » peuvent analyser votre base de code avant le déploiement pour détecter les bogues de manière statique, imitant les vérifications à la compilation de langages comme TypeScript ou Java.

Les capacités de saisie de Python sont étendues. Vous pouvez annoter des types de base comme `str`, `int` et `bool`, ou utiliser des types avancés du module `typing` intégré (ou des collections standard dansPython 3.9+) comme `list[str]`, `dict[str, int]` et `tuple[float, float]`. Des fonctionnalités telles que `Union` (ou l'opérateur pipe `|` dansPython 3.10+) permettent aux paramètres d'accepter plusieurs types, tandis que `Optional[T]` représente une valeur qui peut être un type spécifique ou `Aucun`. La mise en œuvre d’indices de type améliore considérablement la lisibilité et la collaboration en équipe.

Sortie de code et d'exécution

Écrire une fonction avec des annotations de type et inspecter la façon dont elle accepte les entrées.

# Type annotations for function parameters and return values
def greeting(name: str, count: int) -> str:
    return f"Hello {name}! " * count

# Type hints on standard collections (Python 3.9+)
user_roles: dict[str, str] = {
    "admin": "Alice",
    "moderator": "Bob"
}

message = greeting("Jane", 2)
print(message)
print(f"Roles configured: {user_roles}")
Sortie terminale
Hello Jane! Hello Jane! 
Roles configured: {'admin': 'Alice', 'moderator': 'Bob'}

Mise en œuvre étape par étape

  • Prévenir les bugs d'intégration dans les bases de code des grandes équipes
  • Activation de la complétion du code IDE dans les projets de code complexes
  • Générer des structures d'API et des schémas de validation auto-documentés

Foire aux questions

Les indices de type appliquent-ils la sécurité des types au moment de l’exécution ?

Non. Python ne génère pas d'exceptions d'erreur si vous transmettez un type autre que l'indice annoté. Pour appliquer la vérification de type, vous devez exécuter des vérificateurs statiques comme mypy.

Quelle est la différence entre Any et Union ?

Any désactive la vérification du type d'une variable, lui permettant de contenir n'importe quoi. Union (ou T | U) restreint la variable à un sous-ensemble de types spécifique et défini.

Sujets connexes

Ressources Python recommandées

Développez vos connaissances avec des didacticiels interactifs, des aide-mémoire et des comparaisons de codes associés.