効率的な開発を行うためには、自分で作ったプログラムをライブラリ化して再利用することが重要です。複数のライブラリを名前の衝突なく利用するために、Pythonではモジュールを使います。
Pythonでは一つのプログラムが一つのモジュールに相当します。作成したモジュールは、import文を使って他のモジュールから再利用することができます。今回はモジュールの作成と利用方法、モジュールを使う上での注意点について説明します。
モジュールの作成
.pyの拡張子をもつファイル(Pythonのスクリプトファイル)はPythonのモジュールとして他のモジュールから利用することができます。次のような簡単なモジュールを作ってみます。
以下のプログラムをtest_module.pyとして作成します。
1 2 3 4 5 6 7 |
class Test: def sayStr(self, str): print str if __name__ == '__main__': test = Test() test.sayStr("Hello") # Hello |
test_module.pyを実行すると以下のような実行結果になります。
1 |
Hello |
test_module.pyをモジュールとして読み込んだ場合は__main__以下は実行されません。
importを使ってモジュールをインポートする
作成したモジュールは他のモジュールからimportを使ってインポートすることができます。
1 |
import モジュール名 |
以下はtest_module.pyをインポートする例です。
1 2 3 4 5 6 |
# -*- coding: utf-8 -*- import test_module # モジュールをインポート a = test_module.Test() a.sayStr("Hello") # Hello |
拡張子の.pyは不要です。上の例ではインポートしたモジュールからクラスを生成しています。
1 |
モジュール名.クラス名 |
クラスを使う場合は上のようにモジュール名を先頭に付けクラス名をドットでつなげます。他にもメソッド、変数も同様に「モジュール名.メソッド名」、「モジュール名.変数名」のように記述して使います。
fromを使ってインポートする
クラスを作るたびにモジュール名を記述するのが面倒だという場合、fromを使います。
1 |
from モジュール名 from クラス名 |
次のようにfromを使うことで、クラスを直接呼び出すことができモジュール名を記述する必要がなくなります。
1 2 3 4 |
from test_module import Test a = Test() a.sayStr("Hello") |
fromを使うときは他のクラスとの名前の衝突に注意してください。
asを使って別名でインポートする
モジュールを別名でインポートするにはasを使います。
1 |
import モジュール名 as 別名 |
以下はasを使ったプログラム例です。
1 2 3 4 5 6 |
# -*- coding: utf-8 -*- import test_module as test # testという別名でtest_moduleをインポート a = test.Test() a.sayStr("Hello") # Hello |
先ほどはtest_moduleと記述していたのですが、testという名前でモジュールを使うことができるようになります。