モジュール(module)

頻繁に利用する関数、クラスなどの定義、文をファイルとしてまとめておける。 これをモジュールという。 モジュールはインポートすることで利用できる。


モジュールの作成

モジュールにしたい関数、クラスを定義する。 実行可能な文も記述できる。
def f(): print "test module"



インポート(import)

モジュールを import するには 4 つの方法がある。
[.] import module [.] import module as nickname [.] from module import name [.] from module import *
test.py をインポートする。 この時点では モジュール名の test だけがシンボル表にはいる。
import test
モジュール内のシンボルを参照するには モジュール.シンボル とする。
test.f(); # 頻繁に利用する場合は ローカル変数に代入する。 f = test.f; f();
モジュール名ではなく、モジュール内の名前をローカルシンボル表にいれることもできる。
from test import f f(); # _ から始まる以外の名前をシンボル表にいれる。 from test import *
# os, sys をインポートする。 ( 複数のモジュールを同時に指定できる ) import os, sys; # パッケージ内から特定のモジュールをインポートする。 import Sound.Effects.echo; # ネームスペースを省略する。 from Sound.Effects import echo; # 指定した package 以下のすべてのモジュールをロードする # パッケージ内の __init__.py の リスト __all__ のモジュールがすべてロードされる from Sound.Effects import *;
別名をつけることで、名前を短くできる。
import os.path as p p.basename( "d:/py.txt" );



dir

モジュール内で定義されている名前を調べるには組み込み関数 dir() を使う。 ソート済みの文字列のリストが返る。 ヘルプ機能として使える。
import sys, math print dir( sys ) print dir( math )
引数なしでコールすると、現在定義されている名前のリストを返す。
print dir();
組み込みの関数、変数は組み込みモジュール __builtins__ に定義されている。



検索パス

次の順番で python が検索する。
(.) カレントパス (.) $PYTHONPATH
検索パスは sys.path で確認ができる。
import sys print sys.path
import をする前に sys.path の順番を変更することで import するモジュールを切り替えることができる。
sys.path.insert( 0, "d:/python" ) import foo
WARNING 自分で書いているスクリプト自身も最初の検索の対象になるため モジュールと同名のファイルにしないこと。
# wx.py というファイルを用意した場合以下のimport文は自分自身をロードしてしまう。 import wx; # チェックするには __file__ で見る。 print wx.__file__



パッケージ(package)

module をパッケージしたもの。 ディレクトリ構造でパッケージされる。 パッケージをつくるには, 入れ物となるディレクトリをつくる。 検索パス以下に置く。 WARNING __init__.py というファイルは各パッケージごとに必須。 ないとパッケージ内のモジュールをインポートできない。
$PYTHON_PATH /testpack/ __init__.py foo.py
import する側はディレクトリをパッケージ名にしてインポートする。
import testpack.foo # module 内の関数をコールする testpack.foo.func()
__init__.py はパッケージの初期化時に評価される。 __all__ 属性にロードしたい対象のリストをいれておくと * で同時にロードできる。
__all__ = [ "foo" ]
インポートする側は * を指定することで __all__ で指定したすべてのモジュールをロードできる。
import * from testpack