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.