【第20回Python基礎講座】プログラムを部品化!モジュールの作り方とimport

本ページはプロモーションが含まれています
【第20回Python基礎講座】プログラムを部品化!モジュールの作り方とimport
国内のAI狂い

やっほー!国内のAI狂いだよ!✨

第20回へようこそ!コードが長くなってくると、「どこに何を書いたっけ?」って迷子になりがちだよね。
そんな時は、プログラムを機能ごとのファイルに分割して整理整頓しよう!
それを可能にするのが「モジュール」だよ。
今回は、自分のコードを部品化する方法と、Python界に伝わる「謎のおまじない」の意味を解明していくよ!🧩🧹

公式の「ここがわかりにくい」:スクリプトとモジュールの違い

公式チュートリアルにはこう書いてあるよ。

Python インタプリタを終了させ、再び起動すると、これまでに行ってきた定義 (関数や変数) は失われています。(中略) この作業を スクリプト (script) の作成と言います。(中略) このファイルを モジュール (module) と呼びます。

「えっ、スクリプトとモジュールって何が違うの?」って混乱するよね。
実はこれ、「同じファイルのこと」を指してる場合がほとんどなんだ。

  • スクリプト: 直接実行されるファイル(主役)
  • モジュール: 他のファイルから import されて使われるファイル(脇役・部品)
Pythonのファイル(.py)は、主役にも脇役にもなれる二刀流なんだよ!⚔️

1. モジュールの作り方:ただの.pyファイルです

要するにこれは「関数や変数を書いたPythonファイルを保存するだけ」だよ!

モジュールを作るのに特別な儀式は必要ないよ。
ただ関数などを定義して、ファイル名.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)。

  1. カレントディレクトリ(今いる場所、またはスクリプトのある場所)
  2. PYTHONPATH(環境変数で設定した場所)
  3. 標準ライブラリの場所(インストール先)

だから、自分の作ったファイル名を math.py とか random.py にしちゃうと、
本物の標準ライブラリよりも先に自分のが見つかっちゃって、「本物が使えない!」ってバグるから注意してね!(これを「名前の衝突」と言うよ)

試験に出る!要注意ポイント

今回の範囲で、Python 3 エンジニア認定基礎試験によく出るポイントをまとめたよ!📝

① import * とアンダースコア

from module import * をした時、名前が _ (アンダースコア) で始まる関数や変数は、importされないよ。
「これは内部用だから勝手に使わないでね」っていう意思表示(プライベート扱い)なんだ。

② dir() 関数

組み込み関数 dir() を使うと、そのモジュールの中にどんな名前(関数や変数)が定義されているかリストアップできるよ。
モジュールの中身を探検するのに便利!

💡 管理人の失敗エピソード
練習で「csvファイルを読み込むプログラム」を作ろうとして、ファイル名を csv.py にしちゃったの。
で、中で import csv したら、自分のファイル(自分自身)を読み込んじゃってエラー連発!😱
標準ライブラリと同じ名前をつけるのは「自殺行為」だから気をつけてね!

理解度チェック!ミニクイズ

モジュールの仕組み、理解できたかな?
試験レベルの問題でチェックしてみよう!🔍

モジュール mymod.pyimport された時、モジュール内の __name__ の値はどうなる?
  1. "__main__"
  2. "mymod"
  3. "__init__"
▼ クリックで正解を表示
正解: 2. "mymod"

解説:
importされた時は、そのモジュールの名前(ファイル名から.pyを除いたもの)が入るよ。
"__main__" になるのは、直接スクリプトとして実行した時だけ!

from module import * を使った時、importされない名前はどれ?
  1. my_func
  2. MyClass
  3. _internal_func
▼ クリックで正解を表示
正解: 3. _internal_func

解説:
アンダースコア _ で始まる名前は、import * の対象外になるよ。
ただし、import module と書いてから module._internal_func とすればアクセスは可能だよ。

モジュール検索パス(sys.path)に含まれないのは?
  1. カレントディレクトリ(スクリプトのあるディレクトリ)
  2. 標準ライブラリのディレクトリ
  3. コンピュータ内の全フォルダ
▼ クリックで正解を表示
正解: 3. コンピュータ内の全フォルダ

解説:
全フォルダを探してたら日が暮れちゃうよ!(笑)
Pythonは決められた場所(sys.pathに入っている場所)しか探さないんだ。

まとめ:次回への引き

今回は「モジュールの作り方とimport」について解説したよ!
これで自分のコードを整理したり、他人のコードを利用したりする準備が整ったね✨

次回は、さらに便利な「標準ライブラリ」の世界へ!
テーマは「Pythonの電池!標準ライブラリツアー」だよ。
Pythonには最初から「日付計算」「ランダム」「ファイル操作」などの強力なモジュールが付属しているんだ。
これを使いこなせれば、自分でコードを書く量がグッと減るよ!お楽しみに!👋✨

出典: Python公式チュートリアル
Copyright © 2001-2026 Python Software Foundation. Licensed under the PSF License.

よかったらシェアしてね!
  • URLをコピーしました!
目次