Pythonモジュールインポート完全ガイド:実例付きで徹底解説
Pythonモジュールとは
モジュールは、変数、関数、クラスを含む単一のPythonファイルです。ファイル名をguru99.pyとすると、モジュールはguru99としてアクセスされます。モジュールを使うと、大規模プログラムを論理的なピースに分割し、コードを整理・再利用可能にできます。
なぜモジュールをインポートするのか
別ファイルに定義されたコードを使うには、それをインポートする必要があります。インポートにより、モジュールの関数、クラス、変数にアクセスできるようになります。これはJavaScript、Java、Rubyなどの言語におけるimportキーワードと同様です。
モジュールの作成とインポート
シンプルな例で説明します。
フォルダ構成:
modtest/
test.py
display.py
1. test.pyを作成:
def display_message():
return 'Welcome to Guru99 Tutorials!'
2. display.pyを作成しtestをインポート:
import test print(test.display_message())
display.pyを実行すると:
Welcome to Guru99 Tutorials!
モジュールからクラスをインポート
Car.pyが車クラスを定義しているとします:
class Car:
brand_name = 'BMW'
model = 'Z4'
manu_year = '2020'
def __init__(self, brand_name, model, manu_year):
self.brand_name = brand_name
self.model = model
self.manu_year = manu_year
def car_details(self):
print('Car brand is', self.brand_name)
print('Car model is', self.model)
print('Car manufacture year is', self.manu_year)
def get_car_brand(self):
print('Car brand is', self.brand_name)
def get_car_model(self):
print('Car model is', self.model)
display.pyで使用:
import Car
car_det = Car.Car('BMW', 'Z5', 2020)
print(car_det.brand_name)
car_det.car_details()
car_det.get_car_brand()
car_det.get_car_model()
出力:
BMW Car brand is BMW Car model is Z5 Car manufacture year is 2020 Car brand is BMW Car model is Z5
fromを使った特定アイテムのインポート
必要な関数や変数だけを直接インポート:
from test import display_message print(display_message())
インポートしていない名前を使おうとするとNameErrorが発生:
from test import display_message print(display_message1())
モジュールからすべてをインポート
import testでモジュール全体をインポートし、名前をモジュール名で修飾して使うか、from test import *で全名を現在の名前空間にインポート。後者は便利だが名前空間を汚染する可能性があります。
dir()の理解
組み込みdir()関数は、モジュールに定義された属性を含むオブジェクトのすべての属性をリストします:
import Car print(dir(Car))
標準ライブラリの場合:
import json print(dir(json))
パッケージの扱い
パッケージは__init__.pyファイルと1つ以上のモジュールを含むディレクトリです。例:
ディレクトリ構成:
mypackage/
__init__.py
module1.py
module2.py
module3.py
module1.py内:
def mod1_func1():
print('Welcome to Module1 function1')
def mod1_func2():
print('Welcome to Module1 function2')
# ...
エイリアスでインポート:
import mypackage.module1 as mod1 mod1.mod1_func1() mod1.mod1_func2()
Pythonモジュール検索パス
Pythonがインポートを解決する際、以下の順でチェック:
- カレントワーキングディレクトリ。
- 組み込みモジュール。
sys.pathにリストされているディレクトリ。
確認方法:
import sys print(sys.path)
モジュールのエイリアス使用
モジュールに短い名前を付けて可読性向上:
import test as t print(t.display_message()) print(t.my_name)
絶対インポート vs 相対インポート
マルチモジュールプロジェクトでは、モジュールをフルパス(絶対)で参照するか、現在のファイルからの相対パスで参照できます。
絶対インポート例
from package1.module1 import myfunc1 # または import package1.module1 package1.module1.myfunc1()
相対インポート例
from .module1 import myfunc1 # または from .subpkg.module3 import myfunc3
絶対インポートはプロジェクト移動時に明確でエラーが少ないが、冗長になりがち。相対インポートは簡潔だが、大規模プロジェクトでは追跡が難しくなる場合があります。
重要なポイント
- モジュールでPythonコードを別ファイルに分割可能。
importまたはfrom … import …でモジュール内容にアクセス。- エイリアス(
as)で長いモジュール名を扱いやすく。 - パッケージはモジュールをディレクトリに整理し、
__init__.pyでマーク。 sys.pathを理解してインポートエラーをトラブルシュート。- 明確さ重視なら絶対インポート、簡潔さ重視なら相対インポートを選択。
Python
- Python モジュール: 作成・インポート・高度な活用
- Pythonのtimeモジュールをマスター:関数、構造体、実践例
- Python str.count()マスター:文字と部分文字列のカウント実例集
- Python format()文字列を明確な例でマスター
- Python String.find()メソッド完全ガイド:構文、例、代替手法
- Pythonラムダ関数をマスターする:実例とベストプラクティス
- Python round()関数を実例で徹底解説
- Python map()関数をマスター:構文、例、ベストプラクティス
- Python timeit():実行時間測定の実例付きガイド
- Python collections.Counter:効率的なカウント、更新、演算操作
- Python type()とisinstance()の理解:実例付き解説