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.