2.17. Typtips#

Python låter dig annotera funktionsparametrar och returvärden med typinformation. Annoteringarna ignoreras vid körning – inget kontrollerar dem, inget konverterar baserat på dem – men de fungerar som dokumentation för läsare och för IDE:n.

2.17.1. Annoteringssyntax#

En parameterannotering placeras efter ett kolon. Returtypen placeras efter -> och före kroppens kolon:

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)

Tipsen beskriver vad som bör skickas in och vad som kommer att returneras. Att anropa add("hi", "there") höjer inget fel – Python kör kroppen ändå. Tipsen är ett kontrakt, inte en kontroll.

En parameter kan ha både ett standardvärde och en annotering:

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

CPython har rikare notation (Optional, Union, generics) genom modulen typing, men dessa är tunga på MicroPython och behövs sällan för vardaglig kamerakod.

2.17.2. MicroPython vid körning#

MicroPython tolkar annoteringar och ignorerar dem sedan. Det finns ingen typing-modul att importera från på kameran; att försöka använda Optional[int] eller list[int] kommer antingen att misslyckas med importen eller tyst bete sig som vanlig attributåtkomst, beroende på firmware-bygget.

Håll dig till enkla typnamn (int, float, str, bool, bytes, list, tuple, dict) i annoteringar. De kostar inget vid körning och förmedlar avsikten tydligt.

2.17.3. Hur IDE:n använder dem#

IDE:n läser annoteringar för att driva verktygstips, autokomplettering och inbyggda tips. En funktion som annoteras med -> int visar int som sin returtyp när markören hålls över anropet. En parameter som annoteras med : str autokompletterar strängmetoder på argumentet inuti funktionskroppen.

Detta är den praktiska utdelningen av att skriva annoteringar på en körmiljö som ignorerar dem: bättre stöd från editorn utan någon kostnad alls när skriptet körs på kameran.

2.17.4. Variabelannoteringar#

Annoteringar på vanliga tilldelningar fungerar på samma sätt:

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

Dessa ignoreras också vid körning. Deras huvudsakliga användning är att göra den avsedda typen tydlig när högersidan inte gör den tydlig – vanligtvis när det inledande värdet är en platshållare som kommer att ersättas senare.