この記事で分かること
- 「モジュール化」の内容とその目的が分かる
- 「モジュール化」する方法が分かる
Pythonでモジュール化する概要
モジュール化とは、「一連の大きな処理を意味のある単位に分割する」という意味です。Pythonでのモジュール化には2つの手段があります。
1つ目の手段は「別の関数を作る」ことです。つまり、大きなロジック(処理)を機能単位に分割して、それら1つ1つを関数にしていくことが考えられます。これによって、機能や処理目的別の関数が作られることになるので、巨大な一枚岩の関数を追っていく手間が省くことができて、プログラムの見やすさが向上します。
2つ目手段は、「関数を別のファイルに移す」ことです。プログラム(ソースコード)はファイルに記述されることになります。大規模なプログラムになれば、ソースコードも複数のファイルにまたがって記述されます。もし、処理が関数単位で整理されているとしても、その関数を複数のファイルのうち、どのファイルに定義するかはよく考えなければいけません。
例えば、1つのファイルに関数が1000個並んでいる場合は、いくら機能単位の関数に分割できているとは言っても、その関数の多さで、プログラムの見やすさは失われてしまいます。このような場合には、いくつかの関数が集まった1つのファイルを作って、そのファイルがどのような意味があるか?ということに従ってファイルの名前をつける。これが「関数を別のファイルに移す」という手段を取った「モジュール化」です。
本記事では、「関数を役割単位で別ファイルへ移す」ことによってモジュール化する方法を説明します。このモジュール化することによって、意味のある単位でファイルにプログラムがまとめられるので、プログラムの再利用が可能になります。また、大きな規模のプログラムが、役割を持ったファイルに分割され、プログラム全体が把握しやすくなります。
Pythonでモジュール化する為の前提環境
Pythonのモジュール化(別ファイル)の方法の前提の環境は、下の記事で説明している私の環境と同じ環境で確認しています。
-
【Python】バージョン確認の方法【→プログラミング初心者向け】
続きを見る
また、レンタルサーバなどのLinuxサーバを使っている場合は、下の記事でプログラミングする環境の作り方を説明しています。
もし、まだプログラムする環境ができていない方は、先にこちらの記事を読んで、プログラミングできる環境をつくることをおすすめします。
-
【Linux】レンタルサーバーでプログラミングする方法【→ブログのサーバーでできる!】
続きを見る
Pythonでモジュール化する為のサンプルプログラム
ここでは、別のファイルの関数を移すことによってモジュール化するサンプルプログラムを説明します。
別ファイル(モジュール化)のプログラム作成
モジュール化では次の手順でモジュール化を行います。
- モジュール化された関数を定義する
- モジュール化された関数を呼び出す
具体的には、「test.py」「test1.py」という2つのファイルを作成して、「test.py」から「test1.py」で定義した関数を使うというプログラムを説明します。
1.モジュール化された関数を定義する
まず、test1.pyというファイルに関数「method_test1」という関数を定義します。この関数の中では、単純に「method_test1 is called.」と表示するプログラムが書かれています。
def method_test1():
print("method_test1 is called.")
- 関数「method_test1」を定義宣言する
- 文字列「method_test1 is called」を表示する
2.モジュール化された関数を呼び出す
一方、test.pyというファイルでは、「method_test」という関数を定義します。この中では、「method_test is called.」という文字列を表示するプログラムを書くことにします。ここで、test.pyから、test1.pyの「method_test1」を呼び出すことを考えます。
また、test1.pyの関数「method_test1」を呼び出す為に、test1をインポートします。処理の中で、
モジュール名(test1) + .(ドット) + 関数名(method_test1())
とすると、test1.pyの 関数「method_test1」を呼び出すことができます。比較の為に、test.pyのmethod_test()を呼び出す処理も記載しました。method_test()は、test.pyの関数なので、モジュール名を記載する必要はなく、関数名だけで呼び出すことができます。
import test1
def method_test():
print("method_test is called.")
if __name__ == '__main__':
test1.method_test1()
method_test()
- 関数「method_test」を定義宣言する
- 文字列「method_test is called」を表示する
- メインの処理を定義宣言する
- ファイル「test1」の関数「methond_test1」を呼び出す
- 自身のファイルの関数「methond_test」を呼び出す
別ファイル(モジュール化)の実行結果
下の表示が実行結果になります。Mainの処理では、初めにファイル「test1.py」の関数「method_test1」を呼び出し、次に、ファイル「test.py」の関数「method_test」を呼び出したので、その順番で各関数で定義したPrint文が実行されていることが分かります。
$ python test.py
method_test1 is called.
method_test is called.