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.