Pythonのコードでよく見かける from xxx import yyy という書き方。
「ライブラリ?モジュール?クラス?何が何だか分からない…」
という人も多いのではないでしょうか?
この記事では、初心者がつまずきやすい ライブラリ・モジュール・クラスの関係と、import の正しい読み方を具体的な例でやさしく解説します。
ライブラリ・モジュール・クラスの関係とは?
Pythonで何か機能を使いたいときは、多くの場合「外部の部品(=ライブラリ)」を読み込んで使います。
よくある構造は次のようになっています:
|
1 2 3 4 |
ライブラリ └ モジュール(.pyファイル) └ クラスや関数などの定義 |
この3つの関係を具体例で見てみましょう。
具体例①:from dateutil.relativedelta import relativedelta
この1文を分解してみます。
|
1 2 |
from dateutil.relativedelta import relativedelta |
読み方と構造:
dateutil:ライブラリ(パッケージ)名relativedelta:dateutilに含まれるモジュール(=relativedelta.pyというファイル)relativedelta(右側):そのモジュールの中で定義されているクラス(または関数)
つまりこのコードは:
「
dateutilライブラリのrelativedeltaモジュールの中にあるrelativedeltaクラスを使えるようにする」
という意味になります。
実際の使用例(簡単に)
|
1 2 3 4 5 |
from datetime import date from dateutil.relativedelta import relativedelta print(date.today() + relativedelta(months=1)) # 今日から1か月後 |
具体例②:import pandas as pd
次はよく使われる pandas の例です。
|
1 2 |
import pandas as pd |
これは:
pandas:ライブラリ全体を読み込むas pd:短い名前(別名)をつけて使う
という意味で、次のように書けるようになります:
|
1 2 |
df = pd.DataFrame({...}) |
裏ではこういう構造になっている
pandas(ライブラリ)core、io、utilなど複数のモジュールに分かれているDataFrameやSeriesなどのクラスはpandas.core.frameなどで定義されている
pandas の場合はよく使う機能をまとめて提供してくれるので、普通は全部を import pandas だけで済ませます。
どんなときに from xxx import yyy を使うのか?
Pythonでは、ライブラリごとに多くの機能(関数やクラス)が含まれています。
すべてをまとめてインポートすることもできますが、「この1つだけ使いたい」という場合に便利なのが from xxx import yyy の書き方です。
この構文を使うことで、次のようなメリットがあります。
使いたい機能が1つだけでいいとき
ライブラリ全体を読み込むのは少し重たいし、名前も長くなりがちです。
もし「その中の1つの関数しか使わない」のであれば、必要なものだけインポートした方が効率的です。
たとえば、平方根を求める sqrt() 関数だけを使いたい場合:
|
1 2 |
from math import sqrt print(sqrt(16)) # → 4.0 |
このように書けば、sqrt() を単独でそのまま呼び出すことができます。
長いモジュール名を何度も書かなくて済む
もし from を使わずに import math だけで済ませると、こうなります:
|
1 2 |
import math print(math.sqrt(16)) # → 4.0 |
このように、関数を使うたびに「math.」という接頭辞をつけなければなりません。
ですが from math import sqrt としておけば:
- コードが短くて見やすい
- 同じ関数を何度も使うときに楽
- 読み手にも分かりやすい
というメリットがあります。
このように①使いたい機能が1つだけの時、②長いモジュール名を何度も書きたくない時などにfrom xxx import yyy という書き方を使います。
まとめ
| 用語 | 意味 | 例 |
|---|---|---|
| ライブラリ | 機能をまとめた「部品箱」 | dateutil, pandas, math |
| モジュール | ライブラリ内の .py ファイル |
relativedelta.py, math.py など |
| クラス | モジュールの中にある「設計図」や「型」 | relativedelta, DataFrame, sqrt |
Pythonの import 構文は、ライブラリ → モジュール → クラス/関数 の階層をたどって、必要な機能だけを取り出して使うための仕組みです。
from X.Y import Z は「XライブラリのYモジュールからZを使う」と覚えておけば、初見でも理解しやすくなります。
構造がわかると、ドキュメントやエラーメッセージも読みやすくなるので、ぜひこの考え方を身につけておきましょう!