python

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

way of modularization in python
プログラム女子
プログラム女子

プログラムってどうやって整理すればいいのかな...
自分が書いたプログラムだけど、どこにいったか分からなくなって..

「モジュール化」という考え方があるよ。それは「意味のある単位に分割する」という意味なんだけど、ここでは、大きな処理をファイルに分割する方法を紹介するね。

Tommy
Tommy

pythonのモジュール化の概要

summary of modularization

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

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

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

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

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

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

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

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

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

environment of modularization

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

【python】バージョン確認の方法【→プログラミング初心者向け】

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

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

レンタルサーバでプログラミングする方法【→レンタルサーバでできる!】

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のその他「初心者向け」技術

other technique for python beginner

その他のpythonプログラムの「基礎知識」を下記の記事にまとめています。

どれもpythonの文法というべき、基本的なものばかりで、これから「pythonでプログラムを学びたい」という人は、「知っておいて方がよいもの」ばかりです。

私は、「プログラム」は「動いて」こそ価値ががあると考えています。 もともと、「プログラムを学ぶ」というのは、「自分が意図した動作をプログラムにさせるようになる」ということだと思います。 つまり、プログラムを自分の意図通りに動かして、初めて「学べた」と言えるということです。

しかし、実際に手で書いて動かしてみないと「学べない」ことがあります。 頭で理解したと思っても、いざプログラムを書こうとおもっても思い通りにいかない場合があるからです。 それには、プログラムを書く環境の問題だったり、pythonのバージョンが違ったり、ライブラリのバージョンが違ったり、いろいろな事情があります。

「頭で理解する」ことと「実際に動かす」ということは違うのです。 だから、プログラムを学ぶ時には実際にプログラムを書いて「動かしてみる」ことを強くおすすめします。

それぞれの記事には、実行可能なサンプルプログラムを掲載しています。 記事を読んで、実際に自分で書いてみてプログラムの動作をご自身で確認することができます。 是非、下記の記事を読んで、「知識」としてだけではなく、「手」でpythonを覚えていってください。

【python】初心者向けおすすめ記事まとめ【pythonの文法をマスターする!】

-python
-,

Copyright© Tommy's blog , 2020 All Rights Reserved Powered by AFFINGER5.