Pythonクイックリファレンス 第4版
by Alex Martelli, Anna Martelli Ravenscroft, Steve Holden, Paul McGuire, 鈴木 駿, 株式会社クイープ
7章モジュールとパッケージ
一般的なPythonプログラムは複数のソースファイルで構成されている。ソースファイルはそれぞれコードとデータを再利用するためにまとめられたモジュール(module)である。通常、モジュールは互いに独立しているため、他のプログラムで必要なモジュールを再利用できる。場合によっては、複雑さに対処するために、関連するモジュールを1つのパッケージ(package)にまとめることがある。パッケージとは、関連するモジュールとサブパッケージからなる階層的なツリー構造のことである。
モジュールが別のモジュールに依存する場合は、import文またはfrom文を使ってそのことを明示的に指定する。プログラミング言語によっては、グローバル変数がモジュールとモジュールを結ぶ秘密のパイプになることがある。Pythonのグローバル変数は、すべてのモジュールに対してグローバルなのではなく、1つのモジュールオブジェクトの属性である。したがって、Pythonのモジュールは常に管理可能な方法で明示的にやり取りする。このため、モジュールどうしの結び付きは明確で理解しやすい。
Pythonは拡張モジュール(extension module)もサポートしている。拡張モジュールは、C、C++、Java、C#、Rustなどの他の言語でコーディングされたモジュールである。モジュールをインポートするPythonコードにとって、モジュールがピュアPythonなのか拡張なのかはたいしたことではない。モジュールは常にPythonで書き始めることができる。その後で高速化が必要になった場合は、モジュールをリファクタリングして、その一部を低水準言語で書き直すことができる。そうしたとしても、そのモジュールを使っているクライアントコードを変更する必要はない。 ...