2.18. Používání modulů¶
Modul je kolekce kódu v Pythonu – funkcí, tříd, konstant – zabalená tak, aby ji bylo možné znovu použít napříč mnoha skripty. Python se dodává se standardní knihovnou plnou modulů a firmware OpenMV jich přidává více pro komunikaci s kamerou. K modulu se sahá pomocí import.
2.18.1. import¶
Nejpřímější forma vtáhne celý modul pod jeho vlastním jménem:
import math
print(math.sqrt(2))
Výstup:
1.4142135623730951
Po import je každé jméno definované modulem math dosažitelné jako math.<name>. Jméno modulu pochází z jeho názvu souboru (bez .py); prefix jmenného prostoru zabrání kolizi dvou modulů se stejným názvem funkce.
2.18.2. from … import¶
Chcete-li vtáhnout konkrétní jména přímo do aktuálního rozsahu, použijte from:
from math import sqrt, pi
print(sqrt(2), pi)
Výstup:
1.4142135623730951 3.141592653589793
Prefix jmenného prostoru už není potřeba. To je pohodlné pro jména používaná často, ale import přes from, který vtahuje mnoho jmen, ztěžuje rozpoznání, odkud každé jméno pochází. Prosté import math je ve větších skriptech obvykle přehlednější.
Hvězdičková forma from math import * vtáhne vše, co modul exportuje. Vyhněte se jí – znečišťuje jmenný prostor a mate automatické doplňování v IDE.
2.18.3. Aliasování pomocí as¶
Dlouhá jména modulů lze zkrátit pomocí as:
import json as j
j.dumps({"ok": True})
Tentýž trik funguje na jednotlivých jménech importovaných pomocí from:
from math import sqrt as root
root(9) # 3.0
U běžného kódu v Pythonu aliasujte jen tehdy, když je původní jméno opravdu dlouhé nebo koliduje s něčím jiným, co už je v rozsahu.
2.18.4. Dostupné moduly¶
Referenční příručka knihovny uvádí každý modul dodávaný na kameře – standardní knihovnu MicroPythonu a moduly specifické pro OpenMV, které řídí obrazový senzor, provozují strojové vidění a ovládají hardware na desce. Všechny používají stejný mechanismus import ukázaný výše.