2.42. Encerramento

Você percorreu as partes do Python que surgem constantemente ao escrever scripts para a OpenMV Cam:

  • Os fundamentos da linguagem – valores e variáveis, aritmética e comparação, strings e bytes, as quatro coleções principais (list, tuple, dict, set), condicionais e laços, definição de funções e gerenciamento de seus argumentos e escopo, definição de classes e uso de herança, levantamento e tratamento de exceções. Esses são os tijolos a partir dos quais todo o resto do Python é construído.

  • As peças estruturais – a divisão do código em módulos e pacotes, a importação do que você precisa, a leitura e escrita de arquivos com with, a troca de dados estruturados por meio de json e o empacotamento de registros binários por meio de struct com endianness e campos de inteiros de largura fixa. Elas aparecem assim que um script cresce além de um único arquivo ou precisa se comunicar com algo externo a ele.

  • As partes que mudam de forma em um runtime restrito – por que os floats do MicroPython são de 32 bits e como compará-los de forma confiável, como o coletor de lixo distribui e recupera blocos, por que a fragmentação importa em um heap pequeno e como a pré-alocação mantém scripts de longa duração bem comportados. Os hábitos de desktop às vezes induzem ao erro aqui; este material lhe dá o modelo mental correto para código que roda no dispositivo.

  • As ferramentas de introspecção e código dinâmicoid(), hash(), isinstance(), issubclass(), callable(), globals(), locals() para examinar valores e o ambiente; eval() / exec() / compile() para os casos raros em que gerar código em tempo de execução é a resposta certa. A maioria dos scripts nunca toca nessas ferramentas, mas saber que elas existem (e quando não recorrer a elas) faz parte de ler o Python de outras pessoas.

  • Correspondência de padrões em texto – o módulo re para strings cuja forma você pode descrever, mas não enumerar. Classes de caracteres, quantificadores, grupos de captura, âncoras e o equilíbrio entre comportamento guloso e preguiçoso, junto com os pontos específicos em que o subconjunto do MicroPython fica aquém do CPython. Recorra a ele quando str.find ou str.split chegarem ao seu limite.

  • Contêineres além dos built-inscollections.namedtuple() para registros tipados, collections.deque para buffers circulares limitados e janelas deslizantes, collections.OrderedDict quando a ordem de inserção faz parte da igualdade, e heapq para perguntas como “qual é o menor” ou “qual é o mais urgente” construídas sobre uma lista comum. Cada um preenche uma lacuna deixada pelos quatro tipos principais de contêiner.

  • As ferramentas do fluxo de trabalho cotidiano – compreensões para construir coleções a partir de coleções existentes, geradores e o protocolo de iteradores para processar dados de forma preguiçosa, decoradores e gerenciadores de contexto para encapsular padrões comuns de aquisição/liberação e antes/depois, e os hábitos de depuração (ler tracebacks, repr(), dir(), help(), o módulo logging) que transformam um script quebrado em um script corrigido.

2.42.1. Usando este guia introdutório mais tarde

Trate o guia introdutório como material de referência, não como uma leitura única. Os capítulos são curtos de propósito; voltar para relembrar fatiamento, gerenciadores de contexto ou compreensões é o uso pretendido. Marque a seção a que você mais recorre.

Se algo na documentação da câmera mais tarde fizer referência a um conceito de Python que você não reconhece – digamos, “isto retorna um gerenciador de contexto” ou “itere o resultado” – a página correspondente do guia introdutório é o lugar para começar.

2.42.2. Para onde ir a partir daqui

O controle básico de hardware se baseia diretamente no Python que você agora conhece. Onde o guia introdutório vivia na memória, o controle de hardware vive no mundo físico – tensões em pinos, pulsos em fios, bytes transmitidos por barramentos a outros chips. O conjunto de ferramentas muda para o módulo machine e uma fina camada de eletrônica. Tudo do guia introdutório continua valendo; você não vai reaprender def ou with nem como bytearray difere de bytes.

Quando você se deparar com um recurso do Python que pareça desconhecido no material de hardware, este guia introdutório é o lugar para retornar.