
きょうは、5つ並んだ用語を1本の入れ子に整理してしまいます
ライブラリ。パッケージ。モジュール。クラス。関数。
Pythonを触っていると、この5つが当たり前のように出てきます。
そして、たいてい説明されないまま進みます。
なんとなく分かったふりで、ずっと来ちゃったやつ……

混乱の原因は、用語が難しいことではありません。
どれがどれを含むのかが、示されないまま並ぶことにあります。
ここは、大人の学び直しでよく詰まるところです。
学生時代なら、用語は覚えれば済みました。
試験に出るのは、定義だったからです。
いまは違います。
定義を覚えても、コードを読む手は止まったままです。
要るのは、5つの定義ではありません。
入れ子の形が1つ、頭に入っていることです。
結論:フォルダとファイルに置き換える
いちばん早いのは、いつも見ている形に置き換えることです。
パッケージ = フォルダ
↓
モジュール = ファイル(.py)
↓
クラス = ファイルの中の設計図
↓
関数 = その中の、ひとつの仕事
これだけで、ほとんど片が付きます。
フォルダの中にファイルがある。
ファイルの中にコードが書いてある。
それと同じ話です。
あ、知らない構造じゃなかったんだ


そうなんです。新しく覚えるのではなく、知っている形に置き直すだけで済みます
並べると、こうなります。
| 呼び名 | 実体 | 中に持つもの |
|---|---|---|
| パッケージ | フォルダ | モジュール、下位のパッケージ |
| モジュール | ファイル1つ | クラス、関数、変数 |
| クラス | コード | メソッド、変数 |
| 関数 | コード | 一連の処理 |
ここまでは、素直な入れ子です。
ライブラリだけ、仲間はずれです
お気づきかもしれませんが、表にライブラリがありません。
意図的に外しました。
パッケージとモジュールは、形の名前です。
ライブラリは、役割の名前です。
フォルダかファイルか、という話ではありません。
「人に使ってもらうためのまとまり」を、そう呼んでいるだけです。
だから、大きさはまるでそろっていません。
- ファイル1つだけのライブラリも、ふつうにあります
- numpyのように、フォルダとファイルが山ほど入ったものもあります
同じ「ライブラリ」という言葉で呼ばれます。

ここが分からないと、いつまでも階層のどこに置けばいいのか決まらないんです
並びの中に置こうとするから、混乱します。
ライブラリは、並びの外にある呼び名だと思ってください。
ここが誤解されやすい:書き方を変えても軽くなりません
次の2つは、どう違うのでしょうか。
① from pandas import DataFrame
② import pandas as pd
pd.DataFrame(...)
よく言われるのが、この説明です。
「①は必要な分だけ読み込むので軽い」
「②は全部を読み込むので重い」
これは、正しくありません。
え、そう覚えてたんだけど

Pythonの公式の説明では、①はこう動きます。
- まず、fromに書いたものを探して読み込み、初期化する
- そのうえで、指定された名前を取り出して手元に置く
つまり、①でもpandasは丸ごと読み込まれています。
中の初期化コードも、同じように走ります。
変わるのは、読み込む量ではありません。
自分の手元に、どの名前が並ぶかだけです。
①は、手元に置くのがひとつ。
②は、まとめて置いて、その都度たどる。
差は、そこだけです。
では、どちらで書くべきか
速さで選ぶ話ではなくなったので、基準を置き直します。
- どこから来た名前かを見せたい … ②。あとで読む人が迷いません
- 何度も出てきて長い … ①。読みやすさが勝ちます
実務でよく効くのは、②を既定にしておくことです。
名前がぶつからないからです。
①を重ねると、どこから来た名前なのかが分からなくなります。
同じ名前を別のところから持ってきて、上書きしてしまう事故も起きます。
速さじゃなくて、読みやすさで決めるんだ

ついでに、よくつまずく書き方も1つ。
import pandas.dataframe # 通りません
これが通らないのは、書き方が間違っているからではありません。
点でつなぐ書き方そのものは、正しい形です。
通らないのは、その名前のファイルが存在しないからです。
DataFrameはファイルではなく、ファイルの中に書かれたクラスです。
フォルダをたどる書き方では、そこへは届きません。
自分で作るとき、どこで切るか
読むだけでなく、作る側になったときの話も少しだけ。
1つのファイルに、どこまで詰めるべきか。
決まりはありません。
ただ、迷ったときの目安はあります。
「一緒に直すものは、一緒に置く」
片方を直したら、必ずもう片方も直す。
そういう関係なら、同じファイルに置いたほうが楽です。
逆に、いつも別々に直しているものは、分けたほうがいい。
行数で切ると、たいてい後で困ります。
直すときの手が、どう動くかで切ってください。
用語を覚えるより、疑えるほうが効きます
最後に、勉強のしかたの話を少しだけ。
今回いちばん大事なのは、5つの定義ではありません。
「①のほうが軽い」が広く信じられている、という事実のほうです。

ぼくもずっとそう思っていました。調べて、はじめて違うと分かったんです
もっともらしい説明は、そのまま定着します。
しかも、書いたコードは動いてしまう。
動くので、間違いに気づく機会がありません。
大人の学び直しで効くのは、覚える量ではありません。
「その説明、ほんとうか」と一度立ち止まれることです。
そして、立ち止まった先で調べれば、公式の説明はたいてい見つかります。
関数の名前が覚えられない、という悩みにはPythonの関数が覚えられないのは、当たり前ですのほうが効くと思います。
手元に持ってくる前に減らす、という考え方はPythonとSQLの使い分け。どこで線を引くかにまとめました。
