Python高座


10. モジュール

今回はモジュールの話である。 できるだけカタカナ言葉を排除すべく努力してきたこの高座で、残念ながら、使わざるを得ない言葉である。[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 の代わりに * を使うとそのモジュールの全てが読み込まれる。


[1]:いくつか訳語を考えてはみた。「族」「束」「群れ」「包」…。どれも、何かの集まり、という意味合いは伝わるものの、機能としてまとめられている、という感覚が抜け落ちてしまうようだ。
[2]:そのうち、説明予定。

目次索引