2.18. Использование модулей¶
Модуль – это набор кода Python (функции, классы, константы), упакованный так, чтобы его можно было переиспользовать во многих скриптах. Python поставляется со стандартной библиотекой, полной таких модулей, а прошивка OpenMV добавляет ещё больше для работы с камерой. Обращение к модулю выполняется с помощью import.
2.18.1. import¶
Самая прямая форма подключает весь модуль под его собственным именем:
import math
print(math.sqrt(2))
Вывод:
1.4142135623730951
После import каждое имя, определённое в math, доступно как math.<name>. Имя модуля берётся из имени его файла (без .py); префикс пространства имён не даёт двум модулям с одинаковым именем функции столкнуться.
2.18.2. from … import¶
Чтобы подтянуть конкретные имена прямо в текущую область видимости, используйте from:
from math import sqrt, pi
print(sqrt(2), pi)
Вывод:
1.4142135623730951 3.141592653589793
Префикса пространства имён больше нет. Это удобно для часто используемых имён, но импорт from, подтягивающий много имён, затрудняет понимание того, откуда взялось каждое имя. Обычный import math обычно понятнее в крупных скриптах.
Звёздочная форма from math import * подтягивает всё, что экспортирует модуль. Пропустите её – она засоряет пространство имён и сбивает с толку автодополнение IDE.
2.18.3. Псевдонимы с помощью as¶
Длинные имена модулей можно сократить с помощью as:
import json as j
j.dumps({"ok": True})
Тот же приём работает с отдельными именами, импортированными через from:
from math import sqrt as root
root(9) # 3.0
В обычном коде Python используйте псевдонимы только тогда, когда исходное имя действительно длинное или конфликтует с чем-то уже находящимся в области видимости.
2.18.4. Доступные модули¶
Справочник по библиотеке перечисляет все модули, поставляемые на камере – стандартную библиотеку MicroPython и специфичные для OpenMV модули, которые управляют датчиком изображения, выполняют машинное зрение и управляют встроенным оборудованием. Все они используют один и тот же механизм import, показанный выше.