2.18. Modulok használata¶
Egy modul Python-kód gyűjteménye – függvényeké, osztályoké, konstansoké –, úgy csomagolva, hogy sok szkripten keresztül újra felhasználható legyen. A Python egy egész standard könyvtárral szállít belőlük, az OpenMV firmware pedig továbbiakat ad hozzá a kamerával való kommunikációhoz. Egy modulhoz az import segítségével nyúlhatunk.
2.18.1. import¶
A legközvetlenebb alak az egész modult a saját neve alatt húzza be:
import math
print(math.sqrt(2))
Kimenet:
1.4142135623730951
Az import után a math által definiált minden név elérhető math.<name> formában. A modul neve a fájlnevéből származik (a .py nélkül); a névtér-előtag megakadályozza, hogy két azonos függvénynevű modul ütközzön.
2.18.2. from … import¶
Ha konkrét neveket szeretnél közvetlenül a jelenlegi hatókörbe húzni, használd a from kulcsszót:
from math import sqrt, pi
print(sqrt(2), pi)
Kimenet:
1.4142135623730951 3.141592653589793
Itt már nincs névtér-előtag. Ez kényelmes a gyakran használt nevekhez, de egy sok nevet behozó from import megnehezíti annak felismerését, hogy melyik név honnan jött. Az egyszerű import math általában áttekinthetőbb a nagyobb szkriptekben.
A csillagos alak, a from math import *, mindent behoz, amit a modul exportál. Hagyd ki – beszennyezi a névteret, és összezavarja az IDE automatikus kiegészítését.
2.18.3. Álnevezés az as segítségével¶
A hosszú modulnevek lerövidíthetők az as segítségével:
import json as j
j.dumps({"ok": True})
Ugyanez a trükk működik a from segítségével importált egyedi neveken is:
from math import sqrt as root
root(9) # 3.0
Általános Python-kódban csak akkor alkalmazz álnevet, ha az eredeti név valóban hosszú, vagy ütközik valami mással, ami már a hatókörben van.
2.18.4. Elérhető modulok¶
A könyvtár-hivatkozás felsorolja a kamerán szállított minden modult – a MicroPython standard könyvtárát és az OpenMV-specifikus modulokat, amelyek a képérzékelőt vezérlik, gépi látást futtatnak és a fedélzeti hardvert irányítják. Mindegyik ugyanazt a fentebb bemutatott import mechanizmust használja.