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, показанный выше.