2.42. Resumen¶
Has recorrido las partes de Python que aparecen constantemente al escribir scripts para la OpenMV Cam:
Los fundamentos del lenguaje – valores y variables, aritmética y comparación, cadenas y bytes, las cuatro colecciones básicas (
list,tuple,dict,set), condicionales y bucles, la definición de funciones y la gestión de sus argumentos y su ámbito, la definición de clases y el uso de la herencia, lanzar y manejar excepciones. Estos son los ladrillos con los que se construye cualquier otra pieza de Python.Las piezas estructurales – repartir el código entre módulos y paquetes, importar lo que necesites, leer y escribir archivos con
with, intercambiar datos estructurados mediantejsony empaquetar registros binarios mediantestructcon orden de bytes (endianness) y campos enteros de ancho fijo. Aparecen en cuanto un script crece más allá de un solo archivo o necesita comunicarse con algo externo a sí mismo.Las partes que cambian de forma en un entorno de ejecución limitado – por qué los floats de MicroPython son de 32 bits y cómo compararlos de forma fiable, cómo el recolector de basura reparte y recupera bloques, por qué la fragmentación importa en un montículo pequeño y cómo la reserva previa mantiene bien comportados los scripts de larga ejecución. Los hábitos del escritorio a veces inducen a error aquí; este material te da el modelo mental correcto para código que vive en el dispositivo.
Las herramientas de introspección y de código dinámico –
id(),hash(),isinstance(),issubclass(),callable(),globals(),locals()para mirar los valores y el entorno;eval()/exec()/compile()para los casos poco frecuentes en que producir código en tiempo de ejecución es la respuesta correcta. La mayoría de los scripts nunca usan estas herramientas, pero saber que existen (y cuándo no recurrir a ellas) forma parte de leer el Python de otras personas.Coincidencia de patrones en texto – el módulo
repara cadenas cuya forma puedes describir pero no enumerar. Clases de caracteres, cuantificadores, grupos de captura, anclas y el compromiso entre coincidencia voraz y perezosa, junto con los puntos concretos en que el subconjunto de MicroPython se queda corto respecto a CPython. Recurre a él cuandostr.findostr.splitse quedan sin camino.Contenedores más allá de los integrados –
collections.namedtuple()para registros con tipos,collections.dequepara búferes circulares acotados y ventanas deslizantes,collections.OrderedDictcuando el orden de inserción forma parte de la igualdad, yheapqpara preguntas del tipo «cuál es el más pequeño» o «cuál es el más urgente» construidas sobre una lista normal. Cada uno cubre un hueco que dejan los cuatro tipos de contenedor básicos.Las herramientas del flujo de trabajo diario – las comprensiones para construir colecciones a partir de otras existentes, los generadores y el protocolo de iteradores para procesar datos de forma perezosa, los decoradores y los gestores de contexto para envolver los patrones habituales de adquirir/liberar y de antes/después, y los hábitos de depuración (leer trazas de error,
repr(),dir(),help(), el módulologging) que convierten un script averiado en uno arreglado.
2.42.1. Usar este manual más adelante¶
Trata el manual como material de referencia, no como una lectura de una sola pasada. Los capítulos son cortos a propósito; volver a refrescar la segmentación o los gestores de contexto o las comprensiones es el uso previsto. Marca como favorita la sección que más utilices.
Si algo de la documentación de la cámara hace referencia más adelante a un concepto de Python que no reconozcas – por ejemplo, «esto devuelve un gestor de contexto» o «itera el resultado» – la página correspondiente del manual es el lugar por el que empezar.
2.42.2. Hacia dónde ir desde aquí¶
El control básico del hardware se construye directamente sobre el Python que ya conoces. Donde el manual vivía en la memoria, el control del hardware vive en el mundo físico: voltajes en los pines, pulsos en los cables, bytes transmitidos por buses hacia otros chips. El conjunto de herramientas pasa al módulo machine y a una fina capa de electrónica. Todo lo del manual sigue siendo útil; no tendrás que volver a aprender def ni with ni en qué se diferencia bytearray de bytes.
Cuando te topes con una característica de Python que te resulte desconocida en el material de hardware, este manual es el lugar al que volver.