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.