Python | モジュールと import

Python
スポンサーリンク

初心者向けに「なぜモジュールを使うのか」「どう使うのか」「自分で作るには?」を、実際に動かせる例と練習問題(解答付き)でしっかり説明します。コードはそのまま Python に貼って試せます。


1) モジュールって何?なぜ使うの?

モジュール = 関数・変数・クラスなどをまとめたファイル(.py

  • 目的:同じ処理を何度も書かない、コードを整理する、他人が作った便利な機能を使うため。
  • 例:math(数学関数)、random(乱数)などは最初から使える「標準モジュール」です。

メリット

  • 再利用できる(何度も同じ処理を書かない)
  • 見通しがよくなる(機能ごとにファイルに分ける)
  • 他人や標準ライブラリの便利な機能を取り込める

2) 基本の import の書き方(で実行してみよう)

例 1 — モジュール全体をインポート

import math
print(math.sqrt(9))      # 3.0
print(math.pi)           # 3.141592653589793
Python

ポイントmath.sqrt のように「モジュール名.関数名」で呼び出す。

例 2 — モジュールから特定の名前だけ取り込む

from math import sqrt, pi
print(sqrt(16))          # 4.0
print(pi)                # 3.1415...
Python

ポイントmath. を書かなくて良いので短く書ける。

例 3 — 別名(エイリアス)を付ける

import math as m
print(m.sqrt(25))        # 5.0
Python

ポイント:長いモジュール名を短くしたいときに便利(import numpy as np のように頻出)。

例 4 — 全部取り込む(注意)

from math import *
print(sin(0.5))
Python

注意:名前が増えて、どのモジュールのものか分かりにくくなるため大規模コードでは推奨されません。


3) 自分でモジュール(ファイル)を作る方法

  1. ファイル mymath.py を作る:
# mymath.py
def add(a, b):
    return a + b

def factorial(n):
    if n <= 1:
        return 1
    return n * factorial(n-1)
Python
  1. 別ファイルで使う:
# main.py
import mymath

print(mymath.add(3, 4))         # 7
print(mymath.factorial(5))      # 120
Python

ヒントmymath.pymain.py は同じフォルダに置くと簡単に import できます。


4) 実践:__name__ == "__main__" の意味(モジュールをテストするときに便利)

mymath.py に次を追加してみると:

# mymath.py
def add(a, b):
    return a + b

if __name__ == "__main__":
    # このブロックは「直接このファイルを実行したときだけ」動く
    print("テスト:", add(2, 3))
Python
  • python mymath.py と直接実行すると "テスト: 5" が出る。
  • import mymath するとこのテスト部分は実行されない(モジュールとして安全に使える)。

5) モジュール検索パス(エラーのよくある原因)

  • Python は import 時に現在のフォルダ → 標準ライブラリ → サイトパッケージ等の順で検索します。
  • よくある失敗:
    • ファイル名が標準モジュール名と被っている(例:自分のファイル名を math.py にしてしまうと本物の math が使えなくなる)。
    • ファイルが別フォルダにあって ImportError が出る(同じディレクトリか PYTHONPATH を確認)。

6) 標準モジュール vs 外部ライブラリ(ざっくり)

  • 標準モジュール:Pythonに最初から入っている(例:math, random, json)。すぐ使える。
  • 外部ライブラリ:必要があれば pip install ライブラリ名 で追加して使う(例:numpy, requests)。
    pip の使い方は後で追加説明できます)

7) 例題(ステップで動かせる)と解説

例題 A(簡単) — random を使ってサイコロを振る

import random

def roll_dice():
    return random.randint(1, 6)

print(roll_dice())
Python

説明random.randint(1,6) は 1〜6 の整数を出す関数。サイコロのシミュレーションに便利。

例題 B(中級) — datetime で今の年月日を表示

from datetime import datetime

now = datetime.now()
print(now.year, now.month, now.day)
print(now.strftime("%Y-%m-%d %H:%M:%S"))  # 例: 2025-11-04 19:00:00
Python

説明datetime は日付や時間の処理に便利な標準モジュール。

例題 C(やや応用) — 自分のモジュール textutils.py を作って使う

textutils.py

# textutils.py
def shout(s):
    return s.upper() + "!"

def repeat(s, n=2):
    return (s + " ") * n
Python

main.py

from textutils import shout, repeat

print(shout("hello"))
print(repeat("hi", 3))
Python

説明:関数ごとに分けて整理することで、必要な機能だけ取り出して使えます。


8) 練習問題(回答付き)

初級

Q1. math モジュールを使って 2 の平方根を出力するコードを書きなさい。
解答

import math
print(math.sqrt(2))
Python

中級

Q2. random モジュールを使って 0〜1 の小数を 5 個生成する関数 five_random() を作りなさい(標準出力でそれぞれ表示)。
解答

import random

def five_random():
    for _ in range(5):
        print(random.random())

five_random()
Python

説明:random.random() は 0 以上 1 未満の浮動小数点を返す。

上級

Q3. mylib.pyis_prime(n)(素数判定)を実装して、それを別ファイルから呼び出して 2〜50 の素数を表示するプログラムを書きなさい。
解答(mylib.py)

# mylib.py
def is_prime(n):
    if n < 2:
        return False
    i = 2
    while i * i <= n:
        if n % i == 0:
            return False
        i += 1
    return True
Python

解答(main.py)

import mylib

for n in range(2, 51):
    if mylib.is_prime(n):
        print(n)
Python

説明:自作モジュール mylib を別ファイルから import して利用している。


9) よくあるエラーと対処法

  • ModuleNotFoundError: No module named 'xxx'
    → ファイル名やフォルダ位置を確認。外部ライブラリなら pip install xxx が必要。
  • 名前が被る(例:自分の random.py が標準 random を邪魔する)
    → 自分のファイル名を変更する。
  • from module import namename が見つからない
    → モジュール内でその名前が定義されているかを確認。

10) ちょっとしたコツ

  • 最初は import モジュール でモジュール名を付けて使う(どのモジュールの関数か明確になる)。
  • 便利な機能を見つけたら標準ライブラリを調べてみる(json, os, pathlib, itertools など)。
  • 自分用のヘルパー関数は小さなモジュールにまとめて保管しておくと再利用しやすい。
タイトルとURLをコピーしました