Python – モジュール その1
2009年5月16日 1:32 AM by Abalone




本格的にPythonの学習を進めている。今日はモジュール。

モジュールという用語は色々なプログラム言語で使用される言葉だし、プログラムを設計する段階でも使用される。
Pythonで言うモジュールとは、要するに拡張子がpyとなっているファイルのこと。


モジュールは、トップレベルスクリプト(つまり、ユーザーが実行するスクリプト)、または他のモジュールからimport文によりインポートされて、モジュールオブジェクトに格納される。モジュールオブジェクトが生成されるときには、そのモジュールに書かれているコードが実行される。
すでに同名のモジュールオブジェクトが存在する場合には、単に生成済みモジュールオブジェクトを呼び出すだけである。

ここで注意すべきなのは、モジュールがimportされる際には、そのコードが実行されること。これは簡単なコードで確認することができる。
まず、import mtest とだけ書いたPythonスクリプトを作成し、保存する。ファイル名は何でもいい。

import mtest

さらに、print “imported module”とだけ書いたモジュールを作成し、mtest.pyとして、先ほど作成したPythonスクリプトと同じディレクトリに保存する。

print "imported module"

そして、最初に作成したスクリプトを実行すると、imported moduleと表示されるはずである。

さらに、最初に作成したスクリプト中のimport文をコピーして複数行記述して実行してみる。
それでもimported moduleと作成されるのは一度のみのはずである。
一回モジュールオブジェクトが生成されて以降は、同じモジュールがimportされても、生成済みのモジュールオブジェクトを探し出して使用できるようにするだけなので、何度も表示はされない。

ここで注意すべきは、モジュールに書かれているコードはimport時に実行されるので、上で作成したコードのように、トップレベルに何らかの処理を行うコードが書かれているとそれが実行されてしまう、ということ。
関数定義とか、クラス定義記載されているだけならば、それらが使用されるまでは何も処理されないが、さっきの print “imported module”のような文がトップレベルで記載されているとimport文が実行されたときに実際に処理が行われるので、処理内容によってはおかしなことが起こってしまうかもしれない。逆に、これを利用して便利なモジュールを作る、というのも可能だろう(実際に作る用途があるのかどうかは知らないが、技術的には可能なはず)。

モジュールは重要だと思うので、さらに詳しく勉強する必要がありそう。なので、一応この投稿の題名には、その1、というのを付け加えた。続く予定。





トラックバックURL


この記事に対するコメント/トラックバックはまだありません


コメントをどうぞ

お名前(必須)
Eメールアドレス(公開されません)(必須)