2.18. Usar módulos

Um módulo é uma coleção de código Python – funções, classes, constantes – empacotado para poder ser reutilizado em muitos scripts. O Python inclui uma biblioteca padrão cheia deles, e o firmware OpenMV adiciona mais para comunicar com a câmara. O acesso a um módulo é feito com import.

2.18.1. import

A forma mais direta importa o módulo inteiro com o seu próprio nome:

import math

print(math.sqrt(2))

Saída:

1.4142135623730951

Após o import, todos os nomes definidos por math são acessíveis como math.<name>. O nome do módulo vem do seu nome de ficheiro (sem .py); o prefixo de espaço de nomes impede que dois módulos com a mesma função colidam.

2.18.2. from … import

Para importar nomes específicos diretamente para o âmbito atual, use from:

from math import sqrt, pi

print(sqrt(2), pi)

Saída:

1.4142135623730951 3.141592653589793

Já não existe prefixo de espaço de nomes. Isto é conveniente para nomes muito usados, mas um from import que traz muitos nomes torna mais difícil perceber a origem de cada nome. O simples import math é geralmente mais claro em scripts maiores.

A forma com asterisco from math import * importa tudo o que o módulo exporta. Evite-a – polui o espaço de nomes e perturba o autocomplete do IDE.

2.18.3. Alias com as

Nomes de módulo longos podem ser abreviados com as:

import json as j

j.dumps({"ok": True})

O mesmo truque funciona com nomes individuais importados com from:

from math import sqrt as root

root(9)              # 3.0

Para código Python geral, use alias apenas quando o nome original é genuinamente longo ou colide com algo já existente no âmbito.

2.18.4. Módulos disponíveis

A referência da biblioteca lista todos os módulos incluídos na câmara – a biblioteca padrão do MicroPython e os módulos específicos do OpenMV que controlam o sensor de imagem, executam visão por computador e controlam o hardware integrado. Todos utilizam o mesmo mecanismo de import apresentado acima.