最上位の構成単位
プログラムのコードやデータの集合
繰り返し利用できる
Pythonのプログラムファイル
ステートメント
import
モジュール全体をインポート
from
あるモジュールの特定の「名前」のみをインポート
reload
セッションを停止せずにモジュールを再起動
メリット
役割
構成単位
自己完結型の変数パッケージ
名前空間
インポート
対象モジュールのグローバルスコープへのアクセスが可能になる
コードの再利用
名前の定義を保存する
名前空間を分割
モジュールは自己完結的である
ある名前はモジュールの中でのみ有効
基本構造
トップレベルファイルとモジュール
トップレベルファイル
中心をなす1つのファイル
プログラム処理の大きな流れ
アプリケーションの起動
残りの補助的なファイル
狭義のモジュール
トップレベルファイルで利用されるツールの集まり
属性
関数などモジュールに属するツール
特定の名前(変数)が割り当てられる
インポートを通じて利用可能になる
インポートと属性
import(from)ステートメント
プログラム実行時に他のファイルをロードし実行
実行されて初めてリンクされる
コードに書かれているだけではリンクされない
使用されるモジュール名
役割
ロードすべき外部ファイルの特定
ロードさるモジュールを代入する変数
標準ライブラリモジュール
Pythonにあらかじめ用意されている
インポート処理
実行時に行われる
対象モジュールを探す
モジュールのコンパイル(不要な場合もある)
コードの実行とオブジェクトの生成
対象モジュールを探す
モジュールサーチパス
自動で設定される
プログラムのホームディレクトリ
トップレベルファイルの置かれているディレクトリ
環境変数 PYTHONPATH ディレクトリ
標準ライブラリモジュールのディレクトリ
.pthファイルの内容
.pthという拡張子のテキストファイル
1行に1つずつディレクトリを列挙
sys.path属性
標準ライブラリ
先頭はかならずホームディレクトリとなる
値を更新すれば、実行時にサーチパスをカスタマイズ可能
sys.path.append(dirname)
サードパーティエクステンション
distutils
標準ライブラリ
自動的にインストール
パスの設定は不要
インストールするためのスクリプト setup.py
distutilsをインポートし、利用してモジュールをサーチパスに配置する
対象ファイル
importでは拡張子(.py)等を指定しない
種類
.py : ソースファイル
.pyc : バイトコードファイル
ディレクトリ
.so、.dll、pyd : コンパイル済みエクステンションモジュール
zipファイルのコンポーネント
Cで書かれたコンパイル済みビルトインモジュール
JythonのJavaクラス
IronPythonの.NETコンポーネント
処理の内容を変える
インポートフック
例
zipアーカイブからファイルをロード
暗号化データをインポート時に復号
__import__
ビルトイン関数
カスタマイズ可能
モジュールのコンパイル
必要かどうかはファイルのタイムスタンプにより判断
バイトコードはインポート時に作成される
プログラムを実行してもトップレベルのバイトコードファイルは作成されない
コードの実行
コードが実行されモジュールオブジェクトが生成される
コードの内容によっては、インポートの時点で何らかの結果が得られる場合もある
複雑な処理
1つのプロセスで2回以上インポートされることはない
必要時にメモリ上のモジュールを再利用
再度明示的にインポートしたい場合、reloadを利用する
ロード済みのモジュールは、sys.modules に保持される