2.17. Indicații de tip (type hints)¶
Python îți permite să adnotezi parametrii funcției și valorile returnate cu informații de tip. Adnotările sunt ignorate la momentul execuției – nimic nu le verifică, nimic nu face conversii pe baza lor – dar servesc drept documentație pentru cititori și pentru IDE.
2.17.1. Sintaxa adnotărilor¶
O adnotare de parametru se pune după două puncte. Tipul returnat se pune după -> și înaintea celor două puncte ale corpului:
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)
Indicațiile descriu ce ar trebui transmis și ce va fi returnat. Apelarea add("hi", "there") nu generează o eroare – Python execută oricum corpul. Indicațiile sunt un contract, nu o verificare.
Un parametru poate avea atât o valoare implicită, cât și o adnotare:
def greet(name: str, greeting: str = "hello") -> None:
print(greeting, name)
CPython are o notație mai bogată (Optional, Union, tipuri generice) prin modulul typing, dar acestea sunt prea grele pe MicroPython și rareori necesare pentru codul obișnuit al camerei.
2.17.2. MicroPython la momentul execuției¶
MicroPython analizează adnotările și apoi le ignoră. Nu există un modul typing de importat pe cameră; încercarea de a folosi Optional[int] sau list[int] fie va eșua la import, fie se va comporta silențios ca un simplu acces la atribut, în funcție de build-ul de firmware.
Rămâi la nume de tip simple (int, float, str, bool, bytes, list, tuple, dict) în adnotări. Nu costă nimic la momentul execuției și transmit intenția în mod clar.
2.17.3. Cum le folosește IDE-ul¶
IDE-ul citește adnotările pentru a alimenta indicatoarele (tooltips), autocompletarea și indicațiile inline. O funcție adnotată cu -> int afișează int ca tip returnat când cursorul trece deasupra apelului. Un parametru adnotat cu : str autocompletează metodele de șir pe argument în interiorul corpului funcției.
Acesta este beneficiul practic al scrierii adnotărilor pe un mediu de execuție care le ignoră: un suport mai bun din partea editorului, fără niciun cost atunci când scriptul rulează pe cameră.
2.17.4. Adnotări de variabile¶
Adnotările pe atribuiri simple funcționează la fel:
threshold: float = 0.5
name: str = "OpenMV"
Și acestea sunt ignorate la momentul execuției. Principala lor utilizare este de a face evident tipul intenționat atunci când partea dreaptă nu îl face evident – de obicei când valoarea inițială este un substituent care va fi înlocuit ulterior.