Pythonのモジュールとパッケージは、コードを整理して再利用しやすくするための基本的な機能です。これらを使うことで、コードの管理がしやすくなり、大規模なプログラムでも効率的に開発できます。
モジュール (Modules)
モジュールは、Pythonファイル(*.py)のことです。モジュールには関数、クラス、変数などを定義しておくことができ、他のファイルからインポートして利用できます。
モジュールの作成
my_module.pyという名前のモジュールを作成し、以下のコードを記述します。
# my_module.py
def greet(name):
return f"Hello, {name}!"
def add(a, b):
return a + b
モジュールのインポートと利用
別のファイル(例:main.py)でこのモジュールをインポートして利用します。
# main.py
import my_module
# モジュール内の関数を呼び出す
print(my_module.greet("Alice"))
print("3 + 5 =", my_module.add(3, 5))
説明: my_moduleをインポートし、greet関数とadd関数を呼び出しています。
パッケージ (Packages)
パッケージは、モジュールをまとめたディレクトリ(フォルダ)のことです。パッケージには、通常、init.pyというファイルが含まれており、パッケージ全体の初期化に使われます(Python 3.3以降では省略可能)。
パッケージの作成
以下のようなディレクトリ構造を作成します。
mypackage/
__init__.py
module1.py
module2.py
- init.py: パッケージを初期化するためのファイル。内容は空でも構いません。
- module1.py: パッケージ内のモジュール。
- module2.py: パッケージ内の別のモジュール。
mypackage/module1.pyに次のコードを書きます。
# mypackage/module1.py
def greet(name):
return f"Hello from module1, {name}!"
mypackage/module2.pyに次のコードを書きます。
# mypackage/module2.py
def farewell(name):
return f"Goodbye from module2, {name}!"
パッケージのインポートと利用
別のファイル(例:main.py)でこのパッケージをインポートして利用します。
# main.py
# パッケージ内のモジュールをインポート
from mypackage import module1, module2
# モジュール内の関数を呼び出す
print(module1.greet("Alice"))
print(module2.farewell("Bob"))
説明: mypackageパッケージからmodule1とmodule2をインポートし、それぞれの関数を呼び出しています。
__init__.pyの役割
- init.pyファイルは、パッケージ全体の初期化に使われます。以下はその役割の一例です。
サブモジュールのインポート: パッケージ内の特定のモジュールをインポートするために使われます。
# mypackage/__init__.py
from .module1 import greet
from .module2 import farewell
このように__init__.pyでインポートすると、パッケージをインポートしただけでサブモジュールもインポートされます。
# main.py
# パッケージ全体をインポート
import mypackage
print(mypackage.greet("Alice"))
print(mypackage.farewell("Bob"))
実際の例
Python標準ライブラリも多くのモジュールとパッケージで構成されています。たとえば、mathモジュールを使って数学関数を利用できます。
import math
print("Square root of 16 is", math.sqrt(16))
print("Value of pi is", math.pi)
まとめ
- モジュール: Pythonファイルのことで、関数やクラスを他のファイルからインポートして利用できます。
- パッケージ: モジュールをまとめたディレクトリで、init.pyを含むことでパッケージとして認識されます。