2.17. Indications de type

Python permet d”annoter les paramètres et les valeurs de retour des fonctions avec des informations de type. Les annotations sont ignorées à l’exécution – rien ne les vérifie, rien ne convertit en fonction d’elles – mais elles servent de documentation pour les lecteurs et pour l’IDE.

2.17.1. Syntaxe des annotations

Une annotation de paramètre se place après un deux-points. Le type de retour se place après -> et avant le deux-points du corps :

def greet(name: str) -> None:
    print("hello,", name)

def add(a: int, b: int) -> int:
    return a + b

def average(values: list) -> float:
    return sum(values) / len(values)

Les indications décrivent ce qui devrait être passé et ce qui sera renvoyé. Appeler add("hi", "there") ne lève pas d’erreur – Python exécute le corps quand même. Les indications sont un contrat, pas une vérification.

Un paramètre peut avoir à la fois une valeur par défaut et une annotation :

def greet(name: str, greeting: str = "hello") -> None:
    print(greeting, name)

CPython dispose d’une notation plus riche (Optional, Union, génériques) via le module typing, mais celles-ci sont lourdes sur MicroPython et rarement nécessaires pour le code courant d’une caméra.

2.17.2. MicroPython à l’exécution

MicroPython analyse les annotations puis les ignore. Il n’y a pas de module typing à importer sur la caméra ; tenter d’utiliser Optional[int] ou list[int] échouera à l’importation ou se comportera silencieusement comme un simple accès d’attribut, selon la version compilée du micrologiciel.

Limitez-vous aux noms de type simples (int, float, str, bool, bytes, list, tuple, dict) dans les annotations. Ils ne coûtent rien à l’exécution et transmettent clairement l’intention.

2.17.3. Comment l’IDE les utilise

L’IDE lit les annotations pour alimenter les info-bulles, l’autocomplétion et les indications en ligne. Une fonction annotée avec -> int affiche int comme type de retour lorsque le curseur survole l’appel. Un paramètre annoté avec : str autocomplète les méthodes de chaîne sur l’argument à l’intérieur du corps de la fonction.

C’est le bénéfice pratique d’écrire des annotations sur un environnement d’exécution qui les ignore : un meilleur support de l’éditeur sans aucun coût lorsque le script s’exécute sur la caméra.

2.17.4. Annotations de variables

Les annotations sur de simples affectations fonctionnent de la même manière :

threshold: float = 0.5
name: str = "OpenMV"

Elles aussi sont ignorées à l’exécution. Leur principal usage est de rendre le type prévu évident lorsque le membre de droite ne le rend pas évident – généralement lorsque la valeur initiale est un emplacement réservé qui sera remplacé plus tard.