2.18. Usar módulos¶
Un módulo es una colección de código Python (funciones, clases, constantes) empaquetado para poder reutilizarse en muchos scripts. Python incluye una biblioteca estándar repleta de ellos, y el firmware de OpenMV añade más para comunicarse con la cámara. Para acceder a un módulo se usa import.
2.18.1. import¶
La forma más directa incorpora el módulo completo bajo su propio nombre:
import math
print(math.sqrt(2))
Salida:
1.4142135623730951
Tras el import, todos los nombres definidos por math quedan accesibles como math.<name>. El nombre del módulo procede de su nombre de archivo (sin .py); el prefijo de espacio de nombres evita que dos módulos con el mismo nombre de función colisionen.
2.18.2. from … import¶
Para incorporar nombres concretos directamente al ámbito actual, usa from:
from math import sqrt, pi
print(sqrt(2), pi)
Salida:
1.4142135623730951 3.141592653589793
Ya no hay prefijo de espacio de nombres. Esto resulta cómodo para nombres que se usan mucho, pero una importación from que incorpore muchos nombres dificulta saber de dónde procede cada uno. Un simple import math suele ser más claro en scripts grandes.
La forma con asterisco from math import * incorpora todo lo que el módulo exporta. Evítala: contamina el espacio de nombres y desconcierta al autocompletado del IDE.
2.18.3. Crear alias con as¶
Los nombres de módulo largos pueden acortarse con as:
import json as j
j.dumps({"ok": True})
El mismo truco funciona con los nombres individuales importados con from:
from math import sqrt as root
root(9) # 3.0
Para código Python general, crea alias solo cuando el nombre original sea realmente largo o entre en conflicto con algo que ya exista en el ámbito.
2.18.4. Módulos disponibles¶
La referencia de la biblioteca enumera todos los módulos incluidos en la cámara: la biblioteca estándar de MicroPython y los módulos específicos de OpenMV que controlan el sensor de imagen, ejecutan la visión artificial y gobiernan el hardware integrado. Todos ellos usan el mismo mecanismo import mostrado arriba.