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.