コードの整理と再利用
.py ファイルがモジュール利点:
構造例:
my_project/
├── main.py
├── utils/
│ ├── math_utils.py
│ ├── string_utils.py
│ └── file_utils.py
└── models/
├── user.py
└── product.py
calculator.py:
パッケージ構造:
my_package/
├── __init__.py # パッケージマーカー
├── math_ops.py
├── string_ops.py
└── subpackage/
├── __init__.py
└── advanced.py
init.py:
よく使われるモジュール:
人気のライブラリ:
file_utils.py:
"""ファイル操作ユーティリティ"""
import json
import csv
from pathlib import Path
def read_json(filename):
"""JSONファイルを読み込み"""
with open(filename, 'r', encoding='utf-8') as f:
return json.load(f)
def write_json(data, filename):
"""JSONファイルに書き込み"""
with open(filename, 'w', encoding='utf-8') as f:
json.dump(data, f, ensure_ascii=False, indent=2)
def read_csv(filename):
"""CSVファイルを読み込み"""
with open(filename, 'r', encoding='utf-8') as f:
return list(csv.DictReader(f))
def get_file_size(filename):
"""ファイルサイズを取得"""
return Path(filename).stat().st_sizemath_advanced.py:
"""高度な数学関数"""
import math
def factorial(n):
"""階乗を計算"""
if n < 0:
raise ValueError("負の数の階乗は計算できません")
if n <= 1:
return 1
return n * factorial(n - 1)
def fibonacci(n):
"""フィボナッチ数列のn番目を計算"""
if n <= 0:
return 0
elif n == 1:
return 1
else:
return fibonacci(n-1) + fibonacci(n-2)
def is_prime(n):
"""素数かどうかを判定"""
if n < 2:
return False
for i in range(2, int(math.sqrt(n)) + 1):
if n % i == 0:
return False
return True
def prime_factors(n):
"""素因数分解"""
factors = []
d = 2
while d * d <= n:
while n % d == 0:
factors.append(d)
n //= d
d += 1
if n > 1:
factors.append(n)
return factors# main.py
from file_utils import read_json, write_json
from math_advanced import factorial, is_prime, prime_factors
def main():
# データ準備
data = {
"numbers": [5, 7, 12, 17, 20],
"operation": "analysis"
}
# ファイルに保存
write_json(data, "input.json")
# ファイルから読み込み
loaded_data = read_json("input.json")
# 数学的分析
results = {}
for num in loaded_data["numbers"]:
results[num] = {
"factorial": factorial(num) if num <= 10 else "Too large",
"is_prime": is_prime(num),
"prime_factors": prime_factors(num) if num > 1 else []
}
# 結果を保存
write_json(results, "results.json")
print("分析完了!結果はresults.jsonに保存されました。")
if __name__ == "__main__":
main()次は クラス に進みましょう!
リソース: - Python.org - モジュール - PyPI - Python Package Index - Real Python - モジュール
Python チュートリアル