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 の仕組みを使います。