今回はモジュールの話である。
できるだけカタカナ言葉を排除すべく努力してきたこの高座で、残念ながら、使わざるを得ない言葉である。[1]
余談はさておき、これは簡単に言えば、関数の寄せ集めである。
今まで、pythonの対話的な使い方しか説明してこなかったが、例えば立ち上げ直すたびに同じ関数を定義するのは面倒であろう、そういう時にモジュールというものを使う。
まず、拡張子が .py であるファイル(ここでは mymodule.py としておこう)に前回説明したような関数定義を書いておく。そして、pythonを立ち上げる時に
% python -i mymodule.py
と書くと、mymodule.py に書かれた関数が定義された状態でpythonが立ち上がる。あるいは、pythonを立ち上げた後で、
>>> import mymodule
としても、この関数定義が読み込まれる。
読み込むモジュールは環境変数 PYTHONPATH で指定されたパスから読む(指定しておこう)か、またはインストール時に設定されたパスから読む。
この読み込まれた関数の使い方だが、関数名だけでは呼べない。モジュール名を先に付けて mymodule.myfunction のように呼ぶ。
さて、関数の定義以外にも、毎回使う定数があるなどということもあるだろう。モジュールで、それを記述しておいても良い。さらに、クラス定義[2]も書ける。他のモジュールも呼べる。つまり、一つの完結したスクリプトとしてこれを利用できる。こうした場合、最後に対話的環境に戻る必要がないので、立ち上げ方を変える必要がある。
% python mymodule.py
とすれば良い。これでどうやらスクリプト言語らしくなってきた。
モジュールを読み込む時、あるいはそのモジュールの特定の関数だけ欲しい、などという場合もあろう。その時は、
>>> from mymodule import myfunction
のように、from modulename import functionname という形を使う。functionname の代わりに * を使うとそのモジュールの全てが読み込まれる。