結論から言うと、自作モジュールは、再利用したい関数を別の .py ファイルに置き、必要なファイルから import して使うことで作れます。
Pythonでは、自分で作ったファイルもモジュールとして扱えます。
たとえば、金額計算の関数を price_utils.py にまとめておけば、複数のスクリプトから同じ処理を使い回せます。
この記事では、同じフォルダ内に自作モジュールを作る基本を整理します。
この記事でわかること
完成コード
完成コードは次の通りです。
# price_utils.py に置く想定の処理
def add_tax(price: int, tax_rate: float = 0.1) -> int:
return round(price * (1 + tax_rate))
def create_price_label(item_name: str, price: int) -> str:
tax_included_price = add_tax(price)
return f"{item_name}: {tax_included_price:,}円(税込)"
# main.py に置く想定の処理
items = [
{"name": "ノート", "price": 120},
{"name": "ペン", "price": 80},
{"name": "ファイル", "price": 250},
]
for item in items:
label = create_price_label(item["name"], item["price"])
print(label)実際に2つのファイルに分ける場合は、同じフォルダに price_utils.py と main.py を置きます。main.py では、次のように読み込みます。
from price_utils import create_price_labelコードのポイント
このコードでは、税込価格を作る処理を自作モジュールに分ける想定で書いています。
price_utils.pyに価格関連の関数をまとめていますadd_tax()は税額計算だけを担当していますcreate_price_label()は表示用の文字列を作っていますmain.py側は、商品データを用意して関数を呼び出しています
自作モジュールを使うと、同じ処理を何度も書かずに済みます。
また、価格計算のルールが変わったときに、修正する場所を1つに寄せやすくなります。
コードを順番に説明します
主要な処理を分けて説明します。
1. 別ファイルに関数を用意します
def add_tax(price: int, tax_rate: float = 0.1) -> int:
return round(price * (1 + tax_rate))この関数は、税抜価格から税込価格を計算します。
価格に関する処理なので、price_utils.py のような名前のファイルに置くと役割が分かりやすくなります。
Pythonでは、price_utils.py というファイルを作ると、price_utils という名前のモジュールとして読み込めます。
ファイル名はモジュール名になるため、短く分かりやすい英数字の名前にしておくと扱いやすいです。
2. モジュール内で関数を組み合わせます
def create_price_label(item_name: str, price: int) -> str:
tax_included_price = add_tax(price)
return f"{item_name}: {tax_included_price:,}円(税込)"この関数は、同じファイル内にある add_tax() を呼び出しています。
自作モジュールの中でも、関数同士を組み合わせて使えます。
大切なのは、外から使いたい関数と、内部で補助的に使う関数の役割を意識することです。
この記事の例では create_price_label() が外から使いたい関数で、add_tax() はその中でも使える部品です。
3. 別ファイルから読み込んで使います
from price_utils import create_price_label
for item in items:
label = create_price_label(item["name"], item["price"])
print(label)main.py から price_utils.py の関数を使うには、import を書きます。
同じフォルダにあるファイルであれば、基本的にはモジュール名を指定して読み込めます。
このように分けると、main.py は処理の流れを読む場所、price_utils.py は価格処理の詳細を見る場所、という役割になります。
小さなツールでも、この分け方をしておくと後から直しやすくなります。
実務で使うときのポイント
実務で自作モジュールを作るときは、まず「他のファイルからも使いたい処理か」を考えます。
1回しか使わない処理まで細かく別ファイルにすると、かえって追いにくくなることがあります。
自作モジュールに向いている処理には、次のようなものがあります。
- 金額計算や日付変換のように、複数箇所で使う処理
- CSVやJSONの読み書きなど、入出力の共通処理
- 入力チェックや整形のように、ルールを統一したい処理
- メイン処理から切り離したほうが読みやすい補助処理
第5章の後半では、パッケージ構成や from ... import ...、import エラーの原因も扱います。
自作モジュールを作れるようになると、それらのテーマも実際のコード構成として理解しやすくなります。