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を使う」と覚えておけば、初見でも理解しやすくなります。
構造がわかると、ドキュメントやエラーメッセージも読みやすくなるので、ぜひこの考え方を身につけておきましょう!