2.18. Utilizarea modulelor¶
Un modul este o colecție de cod Python – funcții, clase, constante – ambalat astfel încât să poată fi reutilizat în mai multe scripturi. Python vine cu o bibliotecă standard plină de astfel de module, iar firmware-ul OpenMV adaugă mai multe pentru a comunica cu camera. Accesarea unui modul se face cu import.
2.18.1. import¶
Forma cea mai directă aduce întregul modul sub propriul său nume:
import math
print(math.sqrt(2))
Ieșire:
1.4142135623730951
După import, fiecare nume definit de math este accesibil ca math.<name>. Numele modulului provine din numele fișierului său (fără .py); prefixul de spațiu de nume împiedică două module cu același nume de funcție să intre în coliziune.
2.18.2. from … import¶
Pentru a aduce nume specifice direct în domeniul curent, folosește from:
from math import sqrt, pi
print(sqrt(2), pi)
Ieșire:
1.4142135623730951 3.141592653589793
Nu mai există prefix de spațiu de nume. Acest lucru este convenabil pentru nume folosite des, dar un import from care aduce multe nume face mai greu de spus de unde provine fiecare nume. Un simplu import math este de obicei mai clar în scripturile mari.
Forma cu asterisc from math import * aduce tot ceea ce exportă modulul. Evit-o – poluează spațiul de nume și încurcă autocompletarea IDE-ului.
2.18.3. Aliasul cu as¶
Numele lungi de module pot fi scurtate cu as:
import json as j
j.dumps({"ok": True})
Același truc funcționează și pe nume individuale importate cu from:
from math import sqrt as root
root(9) # 3.0
Pentru cod Python general, atribuie un alias doar când numele original este cu adevărat lung sau intră în conflict cu altceva deja prezent în domeniu.
2.18.4. Module disponibile¶
Referința bibliotecii listează fiecare modul livrat pe cameră – biblioteca standard MicroPython și modulele specifice OpenMV care controlează senzorul de imagine, rulează viziunea artificială și controlează hardware-ul de la bord. Toate folosesc același mecanism import prezentat mai sus.