2.18. モジュールを使う¶
モジュール とは、関数、クラス、定数といったPythonコードの集まりで、多くのスクリプトにまたがって再利用できるようパッケージ化されたものです。Pythonにはそれらが詰まった標準ライブラリが付属しており、OpenMVのファームウェアはカメラと対話するためのものをさらに追加します。モジュールへのアクセスは import で行います。
2.18.1. import¶
最も直接的な形式は、モジュール全体をそれ自身の名前のもとに取り込みます。
import math
print(math.sqrt(2))
出力:
1.4142135623730951
import の後は、math が定義するすべての名前に math.<name> としてアクセスできます。モジュール名はそのファイル名(.py を除いたもの)に由来します。名前空間の接頭辞によって、同じ関数名を持つ2つのモジュールが衝突するのを防ぎます。
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 の仕組みを使います。