python

【python】モジュール化の方法【→プログラム初心者向け】

2月 4, 2020

way of modularization in python
プログラム女子
プログラムってどうやって整理すればいいのかな...<br>自分が書いたプログラムだけど、どこにいったか分からなくなって..
「モジュール化」という考え方があるよ。それは「意味のある単位に分割する」という意味なんだけど、ここでは、大きな処理をファイルに分割する方法を紹介するね。
Tommy

pythonのモジュール化の概要

summary of modularization

モジュール化とは、「一連の大きな処理を意味のある単位に分割する」という意味です。

pythonでのモジュール化には2つの手段があります。

1つ目は「別の関数を作る」ことです。つまり、大きなロジック(処理)を機能単位に分割して、それら1つ1つを関数にしていくことが考えられます。これによって、巨大な一枚岩の関数を追っていく手間が省くことができて、プログラムの見やすさが向上します。

2つ目は、「関数を別のファイルに移す」ことです。ファイルは1つのプログラムのまとまりなので、同じような機能があつまった1つのファイルを作ることができます。

例えば、1つのファイルに関数が1000個並んでいる場合は、いくら機能単位の関数に分割できているとは言っても、その関数の多さで、プログラムの見やすさは失われてしまいます。

このような場合には、いくつかの関数が集まった1つのファイルを作って、そのファイルがどのような意味があるか?ということに従ってファイルの名前をつける。これがもうひとつのモジュール化の手段です。

本記事では、「関数を役割単位で別ファイルへ移す」ことによってモジュール化する方法を説明します。

このモジュール化することによって、意味のある単位でファイルにプログラムがまとめられるので、プログラムの再利用が可能になります。また、大きな規模のプログラムが、役割を持ったファイルに分割され、プログラム全体が把握しやすくなります。

pythonのモジュール化の前提の環境

environment of modularization

pythonのモジュール化(別ファイル)の方法の前提の環境は、下の記事で説明している私の環境と同じ環境で確認しています。

オススメ
how to check version in python
【python】バージョン確認の方法【→プログラミング初心者向け】

続きを見る

また、レンタルサーバなどのLinuxサーバを使っている場合は、下の記事でプログラミングする環境の作り方を説明しています。

もし、まだプログラムする環境ができていない方は、先にこちらの記事を読んで、プログラミングできる環境をつくることをおすすめします。

オススメ
how to programming on rental server
レンタルサーバでプログラミングする方法【→ブログのサーバでできる!】

続きを見る

pythonのモジュール化のサンプルプログラム

sample program of modularization

ここでは、別のファイルの関数を移すことによってモジュール化するサンプルプログラムを説明します。

具体的には、「test.py」「test1.py」という2つのファイルを作成して、「test.py」から「test1.py」で定義した関数を使うというプログラムを説明します。

別ファイル化(モジュール化)の手順

まず、test1.pyというファイルにmethod_test1()という関数を定義します。

この中では、単純に「method_test1 is called.」と表示するプログラムが書かれています。

def method_test1():

	print("method_test1 is called.")

一方、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()

別ファイル(モジュール化)の実行結果

下記が実行結果になります。Mainの処理では、初めにtest1.pyのmethod_test1()を呼び出し、次に、test.pyのmethod_test()を呼び出したので、その順番で各関数で定義したPrint文が実行されていることが分かります。

$ python test.py
method_test1 is called.
method_test is called.

-python
-

© 2020 Tommy's blog Powered by AFFINGER5