初めてのPython(18章)

4部ではモジュールについて。

モジュールは、プログラムのコードやデータの集合のことを指し、インポート操作によって他モジュールで定義されている属性を利用できる。
モジュールの操作には以下のようなステートメント、ビルドイン関数を使う

モジュール

プログラムの構成単位であり、自己完結型の変数のパッケージ、独立した名前空間
プログラムからモジュールをインポートすると、モジュールオブジェクトの名前空間がプログラムの属性に形を変える。

モジュールをインポートするには、import もしくは from ステートメントを使用する。
ステートメントが実行されるタイミングでモジュールのインポートが行われる。(Cみたいに予めリンカでの結合はしない)
import ステートメントにはモジュール名を指定する。
importステートメントに渡すモジュール名は以下の2つの役割を持っている。

  1. インポートするモジュールの名称を指定する
  2. インポートされたモジュールを代入する変数となる

インポートの処理

インポートは指定されたモジュール内のステートメントを実行し、定義されているオブジェクトをを作成するという処理をしている。
処理は以下の3つに分かれている。

  1. インポート対象のモジュールファイルを探す
  2. 見つかったファイルをコンパイルし、バイトコードを作る
  3. バイトコードを実行し、モジュール内で定義されているオブジェクトを作る
モジュールファイルを探す

importステートメントは、パス名や拡張子を除いたモジュール名を指定する。
この時、モジュールを探す場所が指定されているのがモジュールサーチパス(sys.path)。
モジュールサーチパスは次の4つから成り立っており、1から順に検索される。
1/3は自動で設定されるので、カスタマイズには2/4を利用する。

  1. プログラムのホームディレクト
  2. 環境変数PYTHONPATH
  3. 標準ライブラリモジュールのディレクト
  4. .pthファイルの内容(存在すれば)