Python モジュールとインポート

昨日書いたコードをHTMLに対応させて、 初めてのPython からモジュールとインポートについてXMind にとったメモをブログに吐き出してみる。

 初めてのPython 第3版

1 Pythonモジュールとインポート

1.1 最上位の構成単位

1.1.1 プログラムのコードやデータの集合

1.1.2 繰り返し利用できる

1.1.3 Pythonのプログラムファイル

1.2 ステートメント

1.2.1 import

– モジュール全体をインポート

1.2.2 from

– あるモジュールの特定の「名前」のみをインポート

1.2.3 reload

– セッションを停止せずにモジュールを再起動

1.3 メリット

1.3.1 役割

– 構成単位

– 自己完結型の変数パッケージ

– 名前空間

1.3.2 インポート

– 対象モジュールのグローバルスコープへのアクセスが可能になる

1.3.3 コードの再利用

– 名前の定義を保存する

– 名前空間を分割

– モジュールは自己完結的である

– ある名前はモジュールの中でのみ有効

1.4 基本構造

1.4.1 トップレベルファイルとモジュール

– トップレベルファイル

– 中心をなす1つのファイル

– プログラム処理の大きな流れ

– アプリケーションの起動

– 残りの補助的なファイル

– 狭義のモジュール

– トップレベルファイルで利用されるツールの集まり

– 属性

– 関数などモジュールに属するツール

– 特定の名前(変数)が割り当てられる

– インポートを通じて利用可能になる

1.4.2 インポートと属性

– import(from)ステートメント

– プログラム実行時に他のファイルをロードし実行

– 実行されて初めてリンクされる

– コードに書かれているだけではリンクされない

– 使用されるモジュール名

– 役割

– ロードすべき外部ファイルの特定

– ロードさるモジュールを代入する変数

1.4.3 標準ライブラリモジュール

– Pythonにあらかじめ用意されている

1.5 インポート処理

1.5.1 実行時に行われる

– 対象モジュールを探す

– モジュールのコンパイル(不要な場合もある)

– コードの実行とオブジェクトの生成

1.5.2 対象モジュールを探す

– モジュールサーチパス

– 自動で設定される

– プログラムのホームディレクトリ

– トップレベルファイルの置かれているディレクトリ

– 環境変数 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.5.3 モジュールのコンパイル

– 必要かどうかはファイルのタイムスタンプにより判断

– バイトコードはインポート時に作成される

– プログラムを実行してもトップレベルのバイトコードファイルは作成されない

1.5.4 コードの実行

– コードが実行されモジュールオブジェクトが生成される

– コードの内容によっては、インポートの時点で何らかの結果が得られる場合もある

– 複雑な処理

– 1つのプロセスで2回以上インポートされることはない

– 必要時にメモリ上のモジュールを再利用

– 再度明示的にインポートしたい場合、reloadを利用する

– ロード済みのモジュールは、sys.modules に保持される

Follow me!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

前の記事

些細なコードだけれど