2.18. Module verwenden#
Ein Modul ist eine Sammlung von Python-Code – Funktionen, Klassen, Konstanten – so verpackt, dass er über viele Skripte hinweg wiederverwendet werden kann. Python wird mit einer Standardbibliothek voll davon ausgeliefert, und die OpenMV-Firmware fügt weitere für die Kommunikation mit der Kamera hinzu. Der Zugriff auf ein Modul erfolgt mit import.
2.18.1. import#
Die direkteste Form holt das gesamte Modul unter seinem eigenen Namen herein:
import math
print(math.sqrt(2))
Ausgabe:
1.4142135623730951
Nach dem import ist jeder von math definierte Name als math.<name> erreichbar. Der Modulname stammt von seinem Dateinamen (ohne .py); das Namensraum-Präfix verhindert, dass zwei Module mit demselben Funktionsnamen kollidieren.
2.18.2. from … import#
Um bestimmte Namen direkt in den aktuellen Gültigkeitsbereich zu holen, verwenden Sie from:
from math import sqrt, pi
print(sqrt(2), pi)
Ausgabe:
1.4142135623730951 3.141592653589793
Es gibt kein Namensraum-Präfix mehr. Das ist praktisch für häufig verwendete Namen, aber ein from-Import, der viele Namen hereinbringt, erschwert es zu erkennen, woher jeder Name stammt. Ein einfaches import math ist in größeren Skripten meist klarer.
Die Stern-Form from math import * bringt alles herein, was das Modul exportiert. Verzichten Sie darauf – sie verschmutzt den Namensraum und bringt die Autovervollständigung der IDE durcheinander.
2.18.3. Aliasing mit as#
Lange Modulnamen können mit as abgekürzt werden:
import json as j
j.dumps({"ok": True})
Derselbe Trick funktioniert bei einzelnen mit from importierten Namen:
from math import sqrt as root
root(9) # 3.0
Verwenden Sie für allgemeinen Python-Code einen Alias nur, wenn der ursprüngliche Name wirklich lang ist oder mit etwas anderem kollidiert, das sich bereits im Gültigkeitsbereich befindet.
2.18.4. Verfügbare Module#
Die Bibliotheksreferenz listet jedes auf der Kamera ausgelieferte Modul auf – die MicroPython-Standardbibliothek und die OpenMV-spezifischen Module, die den Bildsensor ansteuern, maschinelles Sehen ausführen und die On-Board-Hardware steuern. Alle verwenden denselben oben gezeigten import-Mechanismus.