Pythonで自作関数をコードの冒頭に書いていったら、メインの処理がどこに書いてあるのか分かりづらくなった。そんな経験ありませんか?
C言語なら関数をコード冒頭に宣言し、関数自体はコード最後尾に記述しても良かったのに……。
この悩みを解決するのが、関数のモジュール化です。自作関数を別ファイルに分け、importで呼び出せば、プログラム冒頭からメイン処理が書けますよ。
今回は、自作関数のモジュール化について解説していきます!
この記事はこんな人におすすめ!
- Pythonを学習し始めた人
- Pythonで自作関数が増えすぎてしまった人
- Pythonでコード可読性を向上したい人

関数をコード冒頭に宣言すると可読性が悪化
まずメイン処理が分かりづらくなった例として、以下コードを挙げます。
def plus(x, y):
z = x + y
s = "{0}+{1}は{2}です。".format(x, y, z)
return s
def minus(x, y):
z = x - y
s = "{0}-{1}は{2}です。".format(x, y, z)
return s
x = 7
y = 5
print(plus(x, y))
print(minus(x, y))
5+7は12です。
5-7は-2です。
Pyhonは自作関数がコード冒頭にズラズラと書かれ、11行目からメイン処理が始まります。
この例は関数が短く、画面をスクロールしなくてもメイン処理が見えます。しかし、関数が長かったり、複数作成すると、どこにメイン処理が書かれているか画面をスクロールしないと分かりません。
この比較例として、C言語で記述した例を示します。
#include <stdio.h>
char* plus(int x, int y);
char* minus(int x, int y);
int main()
{
int x = 7;
int y = 5;
printf("%s\n", plus(x, y));
printf("%s\n", minus(x, y));
}
char * plus(int x, int y)
{
int z = x + y;
char s[40];
sprintf_s(s, "%d+%dは%dです。", x, y, z);
return s;
}
char* minus(int x, int y)
{
int z = x - y;
char s[40];
sprintf_s(s, "%d-%dは%dです。", x, y, z);
return s;
}
C言語はメイン処理がコード冒頭にあるので、分かりやすいですよね。
プログラムも文章と同じで、始めに全体の流れを把握できると読みやすさがグッと向上します。
自作関数を別ファイルに保存しモジュール化
それでは、コードの可読性を上げるために自作関数をモジュール化していきます。
自作関数はコード冒頭にdef文で定義しましたね。この部分をまるごと別ファイルに保存して下さい。ここではmyFunc.pyとしました。作成したファイルは、メインコードと同じディレクトリに保存しましょう。

def plus(x, y):
z = x + y
s = "{0}+{1}は{2}です。".format(x, y, z)
return s
def minus(x, y):
z = x - y
s = "{0}-{1}は{2}です。".format(x, y, z)
return s
メインファイルから自作関数のファイルをimport
自作関数をメインファイルから削除したので、自作関数を読み込む記述が必要です。自作関数を読み込むにはimport文を使います。
import myFunc
x = 5
y = 7
print(myFunc.plus(x, y))
print(myFunc.minus(x, y))
importの後ろにmyFuncと記述します。.pyの拡張子は不要です。
このimport文は、Numpyやmatplotlibを読み込むときなど、頻繁に使いますよね。
メインファイルで自作関数を呼び出すときは、自作関数名のみの記述でしたが、自作関数をモジュール化した場合は、自作関数のファイル名も指定する必要があります。
自作関数のパッケージ化
モジュールをフォルダ内に入れ、階層下することも可能です。モジュールをフォルダにまとめたものがパッケージとなります。

myFuncを呼び出すにはfrom文を使います。
from testPack import myFunc
x = 5
y = 7
print(myFunc.plus(x, y))
print(myFunc.minus(x, y))
まとめ
今回は、Pythonの自作関数モジュール化について解説しました。
自作関数をコード冒頭に記述するのではなく、別ファイルに記述することで、メイン処理の可読性を向上することが出来ました。
今回の記事が皆さんのPython学習に役立つなら幸いです。
独りでPython学習するのは大変だなと思う方は、書籍やスクールを活用するのも手です。
Python 3 入門 + 応用 +アメリカのシリコンバレー流コードスタイルを学ぶオンライン講座
最後までお読み頂きありがとうございました!