モジュール(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 *
import os, sys;
import Sound.Effects.echo;
from Sound.Effects import echo;
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
自分で書いているスクリプト自身も最初の検索の対象になるため
モジュールと同名のファイルにしないこと。
import wx;
print wx.__file__
パッケージ(package)
module をパッケージしたもの。
ディレクトリ構造でパッケージされる。
パッケージをつくるには, 入れ物となるディレクトリをつくる。
検索パス以下に置く。
WARNING
__init__.py というファイルは各パッケージごとに必須。
ないとパッケージ内のモジュールをインポートできない。
$PYTHON_PATH
/testpack/
__init__.py
foo.py
import する側はディレクトリをパッケージ名にしてインポートする。
import testpack.foo
testpack.foo.func()
__init__.py はパッケージの初期化時に評価される。
__all__ 属性にロードしたい対象のリストをいれておくと * で同時にロードできる。
__all__ = [ "foo" ]
インポートする側は * を指定することで __all__ で指定したすべてのモジュールをロードできる。
import * from testpack