2.18. Usando módulos¶
Um módulo é uma coleção de código Python – funções, classes, constantes – empacotada para que possa ser reutilizada em muitos scripts. O Python vem com uma biblioteca padrão cheia deles, e o firmware da OpenMV adiciona mais para se comunicar com a câmera. Acessar um módulo é feito com import.
2.18.1. import¶
A forma mais direta traz o módulo inteiro sob seu próprio nome:
import math
print(math.sqrt(2))
Saída:
1.4142135623730951
Após o import, todo nome definido por math fica acessível como math.<name>. O nome do módulo vem de seu nome de arquivo (sem .py); o prefixo de namespace evita que dois módulos com o mesmo nome de função colidam.
2.18.2. from … import¶
Para trazer nomes específicos diretamente para o escopo atual, use from:
from math import sqrt, pi
print(sqrt(2), pi)
Saída:
1.4142135623730951 3.141592653589793
Não há mais prefixo de namespace. Isso é conveniente para nomes usados com frequência, mas um import com from que traz muitos nomes torna mais difícil dizer de onde cada nome veio. Um simples import math geralmente é mais claro em scripts maiores.
A forma com estrela from math import * traz tudo que o módulo exporta. Evite-a – ela polui o namespace e atrapalha o autocompletar da IDE.
2.18.3. Apelidando com as¶
Nomes de módulos longos podem ser encurtados com as:
import json as j
j.dumps({"ok": True})
O mesmo truque funciona em nomes individuais importados com from:
from math import sqrt as root
root(9) # 3.0
Para código Python em geral, crie apelidos apenas quando o nome original for genuinamente longo ou colidir com algo que já está no escopo.
2.18.4. Módulos disponíveis¶
A referência da biblioteca lista todo módulo presente na câmera – a biblioteca padrão do MicroPython e os módulos específicos da OpenMV que controlam o sensor de imagem, executam visão de máquina e controlam o hardware embarcado. Todos eles usam o mesmo mecanismo de import mostrado acima.