やっほー!国内のAI狂いだよ!✨
第20回へようこそ!コードが長くなってくると、「どこに何を書いたっけ?」って迷子になりがちだよね。
そんな時は、プログラムを機能ごとのファイルに分割して整理整頓しよう!
それを可能にするのが「モジュール」だよ。
今回は、自分のコードを部品化する方法と、Python界に伝わる「謎のおまじない」の意味を解明していくよ!🧩🧹
公式の「ここがわかりにくい」:スクリプトとモジュールの違い
公式チュートリアルにはこう書いてあるよ。
Python インタプリタを終了させ、再び起動すると、これまでに行ってきた定義 (関数や変数) は失われています。(中略) この作業を スクリプト (script) の作成と言います。(中略) このファイルを モジュール (module) と呼びます。
「えっ、スクリプトとモジュールって何が違うの?」って混乱するよね。
実はこれ、「同じファイルのこと」を指してる場合がほとんどなんだ。
- スクリプト: 直接実行されるファイル(主役)
- モジュール: 他のファイルから
importされて使われるファイル(脇役・部品)
1. モジュールの作り方:ただの.pyファイルです
モジュールを作るのに特別な儀式は必要ないよ。
ただ関数などを定義して、ファイル名.py で保存するだけ。
例えば、calculator.py というファイルを作って、足し算関数を書いてみよう。
🐍 calculator.py(部品側)
# ファイル名: calculator.py
def add(a, b):
return a + b
def sub(a, b):
return a - b
# 変数も定義できるよ
PI = 3.14159
これだけで、立派なモジュールの完成!
使う側(別のファイルや対話モード)からは、import ファイル名(拡張子なし)で呼び出せるよ。
🐍 使う側のコード(main.py)
# calculator.py を読み込む
import calculator
# モジュール名.関数名 で使う
result = calculator.add(10, 5)
print(result) # 15
# モジュール内の変数も使える
print(calculator.PI) # 3.14159
15
3.14159
2. importのバリエーション:道具の取り出し方
「毎回 calculator.add って書くの面倒くさい!」
そんな時は、importの書き方を変えると便利だよ。
① from … import …(中身を直接取り出す)
from calculator import add, sub
# モジュール名なしで使える!
print(add(1, 2))
② import … as …(別名をつける)
モジュール名が長い時や、名前が被りそうな時に使うよ。
import calculator as calc
# 短い名前で使える!
print(calc.add(10, 20))
③ from … import *(全部取り出す)
これは「マジックバッグをひっくり返す」ようなもの。
何が出てくるか分からないし、自分のプログラムの変数と名前が被る(上書きされる)危険があるから、基本的には非推奨だよ!試験でも「推奨されない」って出るよ。
3. 【最重要】謎の呪文 if __name__ == “__main__”:
Pythonのファイルには、隠された変数 __name__(ネーム)があるんだ。
これには「そのファイルがどうやって呼ばれたか」が入っているよ。
- 直接実行した時(主役):
"__main__"という値が入る。 - importされた時(脇役):
"モジュール名"が入る。
これを利用して、「部品として使われる時は静かにしてるけど、直接起動された時だけテストコードを動かす」ということができるんだ!
🐍 calculator.py に追記してみよう
def add(a, b):
return a + b
# ↓ このブロックは import された時は無視される!
if __name__ == "__main__":
print("これは calculator.py を直接実行した時だけ表示されます")
print("テスト実行: 1 + 2 =", add(1, 2))
これを書いておかないと、import calculator しただけで勝手にテストの print が実行されちゃうからね。
このおまじないは、モジュール作りのマナーだよ!🎩
4. モジュールはどこから探してくる?
import 〇〇 って書いた時、Pythonはどこを探してるの?
実は、決まった順番でフォルダを探し回っているんだ(sys.path)。
- カレントディレクトリ(今いる場所、またはスクリプトのある場所)
- PYTHONPATH(環境変数で設定した場所)
- 標準ライブラリの場所(インストール先)
だから、自分の作ったファイル名を math.py とか random.py にしちゃうと、
本物の標準ライブラリよりも先に自分のが見つかっちゃって、「本物が使えない!」ってバグるから注意してね!(これを「名前の衝突」と言うよ)
試験に出る!要注意ポイント
今回の範囲で、Python 3 エンジニア認定基礎試験によく出るポイントをまとめたよ!📝
① import * とアンダースコア
from module import * をした時、名前が _ (アンダースコア) で始まる関数や変数は、importされないよ。
「これは内部用だから勝手に使わないでね」っていう意思表示(プライベート扱い)なんだ。
② dir() 関数
組み込み関数 dir() を使うと、そのモジュールの中にどんな名前(関数や変数)が定義されているかリストアップできるよ。
モジュールの中身を探検するのに便利!
練習で「csvファイルを読み込むプログラム」を作ろうとして、ファイル名を
csv.py にしちゃったの。で、中で
import csv したら、自分のファイル(自分自身)を読み込んじゃってエラー連発!😱標準ライブラリと同じ名前をつけるのは「自殺行為」だから気をつけてね!
理解度チェック!ミニクイズ
モジュールの仕組み、理解できたかな?
試験レベルの問題でチェックしてみよう!🔍
モジュール mymod.py が import された時、モジュール内の __name__ の値はどうなる?
▼ クリックで正解を表示
mymod.py が import された時、モジュール内の __name__ の値はどうなる?"mymod"
解説:
importされた時は、そのモジュールの名前(ファイル名から.pyを除いたもの)が入るよ。
"__main__" になるのは、直接スクリプトとして実行した時だけ!
from module import * を使った時、importされない名前はどれ?
▼ クリックで正解を表示
from module import * を使った時、importされない名前はどれ?_internal_func
解説:
アンダースコア _ で始まる名前は、import * の対象外になるよ。
ただし、import module と書いてから module._internal_func とすればアクセスは可能だよ。
モジュール検索パス(sys.path)に含まれないのは?
▼ クリックで正解を表示
sys.path)に含まれないのは?解説:
全フォルダを探してたら日が暮れちゃうよ!(笑)
Pythonは決められた場所(sys.pathに入っている場所)しか探さないんだ。
まとめ:次回への引き
今回は「モジュールの作り方とimport」について解説したよ!
これで自分のコードを整理したり、他人のコードを利用したりする準備が整ったね✨
次回は、さらに便利な「標準ライブラリ」の世界へ!
テーマは「Pythonの電池!標準ライブラリツアー」だよ。
Pythonには最初から「日付計算」「ランダム」「ファイル操作」などの強力なモジュールが付属しているんだ。
これを使いこなせれば、自分でコードを書く量がグッと減るよ!お楽しみに!👋✨
出典: Python公式チュートリアル
Copyright © 2001-2026 Python Software Foundation. Licensed under the PSF License.






