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.