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.