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