2.18. Använda moduler

En modul är en samling Python-kod – funktioner, klasser, konstanter – paketerad så att den kan återanvändas över många skript. Python levereras med ett standardbibliotek fullt av dem, och OpenMV-firmwaren lägger till fler för att kommunicera med kameran. Att nå in i en modul görs med import.

2.18.1. import

Den mest direkta formen drar in hela modulen under dess eget namn:

import math

print(math.sqrt(2))

Utdata:

1.4142135623730951

Efter import är varje namn definierat av math nåbart som math.<name>. Modulnamnet kommer från dess filnamn (utan .py); namnrymdsprefixet hindrar två moduler med samma funktionsnamn från att kollidera.

2.18.2. from … import

För att dra specifika namn direkt in i det aktuella scopet, använd from:

from math import sqrt, pi

print(sqrt(2), pi)

Utdata:

1.4142135623730951 3.141592653589793

Det finns inget namnrymdsprefix längre. Detta är bekvämt för namn som används ofta, men en from-import som drar in många namn gör det svårare att avgöra varifrån varje namn kom. Vanlig import math är vanligtvis tydligare i större skript.

Stjärnformen from math import * drar in allt modulen exporterar. Hoppa över den – den förorenar namnrymden och ställer till det för IDE:ns autokomplettering.

2.18.3. Alias med as

Långa modulnamn kan förkortas med as:

import json as j

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

Samma knep fungerar på enskilda namn importerade med from:

from math import sqrt as root

root(9)              # 3.0

För allmän Python-kod, använd alias endast när det ursprungliga namnet är genuint långt eller krockar med något annat som redan finns i scopet.

2.18.4. Tillgängliga moduler

Biblioteksreferensen listar varje modul som levereras på kameran – MicroPython-standardbiblioteket och de OpenMV-specifika modulerna som driver bildsensorn, kör maskinseende och styr hårdvaran på kortet. Alla använder samma import-mekanism som visats ovan.