2.17. Típusjelzések (type hints)

A Python lehetővé teszi, hogy megjegyzésekkel lásd el a függvényparamétereket és a visszatérési értékeket típusinformációval. A megjegyzéseket futásidőben figyelmen kívül hagyja a rendszer – semmi sem ellenőrzi őket, semmi sem alakít át alapjukon – de dokumentációként szolgálnak az olvasók és az IDE számára.

2.17.1. Megjegyzés-szintaxis

Egy paraméter-megjegyzés egy kettőspont után kerül. A visszatérési típus a -> után és a törzs kettőspontja előtt áll:

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)

A jelzések azt írják le, mit kellene átadni, és mi fog visszatérni. Az add("hi", "there") hívása nem vált ki kivételt – a Python mindenképp lefuttatja a törzset. A jelzések egy szerződés, nem egy ellenőrzés.

Egy paraméternek lehet alapértelmezett értéke és megjegyzése is:

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

A CPython gazdagabb jelölést kínál (Optional, Union, generikusok) a typing modulon keresztül, de ezek nehézkesek a MicroPython-on, és a mindennapi kamerakódhoz ritkán szükségesek.

2.17.2. MicroPython futásidőben

A MicroPython elemzi a megjegyzéseket, majd figyelmen kívül hagyja őket. Nincs typing modul, amelyből importálni lehetne a kamerán; az Optional[int] vagy a list[int] használatának megkísérlése a firmware build-jétől függően vagy importálási hibát ad, vagy némán egyszerű attribútum-hozzáférésként viselkedik.

Maradj az egyszerű típusneveknél (int, float, str, bool, bytes, list, tuple, dict) a megjegyzésekben. Futásidőben semmibe sem kerülnek, és világosan közvetítik a szándékot.

2.17.3. Hogyan használja őket az IDE

Az IDE beolvassa a megjegyzéseket az eszköztippek, az automatikus kiegészítés és a soron belüli jelzések vezérléséhez. Egy -> int megjegyzéssel ellátott függvény int értéket mutat visszatérési típusként, amikor a kurzor a hívás fölött lebeg. Egy : str megjegyzéssel ellátott paraméter sztringmetódusokat egészít ki automatikusan az argumentumon a függvénytörzsön belül.

Ez a megjegyzések írásának gyakorlati haszna egy olyan futtatókörnyezeten, amely figyelmen kívül hagyja őket: jobb támogatás a szerkesztőtől, mindenféle költség nélkül, amikor a szkript a kamerán fut.

2.17.4. Változó-megjegyzések

Az egyszerű hozzárendeléseken lévő megjegyzések ugyanúgy működnek:

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

Ezeket szintén figyelmen kívül hagyja a rendszer futásidőben. A fő felhasználásuk az, hogy nyilvánvalóvá tegyék a szándékolt típust, amikor a jobb oldal nem teszi azt nyilvánvalóvá – jellemzően amikor a kezdeti érték egy helyőrző, amelyet később lecserélnek.