2.18. Moduulien käyttö

Moduuli on kokoelma Python-koodia – funktioita, luokkia, vakioita – paketoituna niin, että sitä voidaan käyttää uudelleen monissa skripteissä. Python toimitetaan vakiokirjastolla, joka on täynnä niitä, ja OpenMV-laiteohjelmisto lisää lisää kameran kanssa kommunikointiin. Moduuliin tarttuminen tehdään komennolla import.

2.18.1. import

Suorin muoto vetää koko moduulin sisään sen omalla nimellä:

import math

print(math.sqrt(2))

Tuloste:

1.4142135623730951

Komennon import jälkeen jokainen moduulin math määrittelemä nimi on tavoitettavissa muodossa math.<name>. Moduulin nimi tulee sen tiedostonimestä (ilman .py-päätettä); nimiavaruuden etuliite estää kahta saman funktionimen sisältävää moduulia törmäämästä.

2.18.2. from … import

Vetääksesi tietyt nimet suoraan nykyiseen näkyvyysalueeseen, käytä komentoa from:

from math import sqrt, pi

print(sqrt(2), pi)

Tuloste:

1.4142135623730951 3.141592653589793

Nimiavaruuden etuliitettä ei enää ole. Tämä on kätevää usein käytetyille nimille, mutta from-tuonti, joka tuo monia nimiä, vaikeuttaa sen tunnistamista, mistä kukin nimi tuli. Pelkkä import math on yleensä selkeämpi suuremmissa skripteissä.

Tähtimuoto from math import * tuo kaiken, mitä moduuli vie. Ohita se – se saastuttaa nimiavaruuden ja sekoittaa IDE:n automaattisen täydennyksen.

2.18.3. Aliasointi as-sanalla

Pitkät moduulinimet voidaan lyhentää sanalla as:

import json as j

j.dumps({"ok": True})

Sama temppu toimii yksittäisiin nimiin, jotka on tuotu komennolla from:

from math import sqrt as root

root(9)              # 3.0

Yleisessä Python-koodissa aliasoi vain, kun alkuperäinen nimi on todella pitkä tai törmää johonkin muuhun, mikä on jo näkyvyysalueessa.

2.18.4. Saatavilla olevat moduulit

Kirjastoviite luettelee jokaisen kameralla toimitetun moduulin – MicroPythonin vakiokirjaston ja OpenMV-kohtaiset moduulit, jotka ohjaavat kuvasensoria, suorittavat konenäköä ja ohjaavat sisäänrakennettua laitteistoa. Ne kaikki käyttävät samaa edellä esitettyä import-mekanismia.