【本日のミッション】
Day47では「パッケージ構造と init.py」を学びました。
今日は Python の重要な再利用機能である 自作モジュールの作成とインポート を学びます。
自分で作った関数を別ファイルにまとめて呼び出すことで、
コードを整理し、保守性を高める方法を理解しましょう。
目次
今日のゴール
今日の目標は、次の3つだけです。
-
.pyファイルは全部モジュール
-
別ファイルの関数を使えるようになる
-
import / from / as の違いがなんとなく分かる
モジュールとは
一言で言うと
Pythonのプログラムを書いた .py ファイル のことです。
つまり…
〇〇.py = モジュール
です。
なぜモジュールを使うの?
1つのファイルに全部書くと、こんな問題が出ます。
-
コードが長くて読みにくい
-
同じ処理を何度も書いてしまう
-
修正が大変
👉 よく使う処理を別ファイルに分ける と、 プログラムがスッキリします。
まずは一番シンプルな例
ファイル構成
project/ ├── main.py └── calc.py
calc.py(計算用ファイル)
この calc.py が 自作モジュール です。
main.py(使う側)
出力結果
8 6
ここで重要なポイント
-
calc.pyは モジュール -
import モジュール名で読み込む -
モジュール名.関数名()で実行できる
これが 基本形 です。
from ~ import の使い方
モジュール名を書くのが面倒なとき
出力結果
5
calc. を書かなくてよくなります。
from ~ import の特徴
-
必要な関数だけ使える
-
コードが短くなる
-
初心者にはこちらの方が分かりやすいことも多い
as を使って名前を短くする
書き方
あだ名を付ける イメージです。
モジュールを同じフォルダに置く
基本ルール
同じフォルダに置く
project/ ├── main.py └── mymodule.py
フォルダに分けた場合
「フォルダ名 → ファイル名」の順で指定します。
※ 今は 同じフォルダでOK です。
自作モジュールは何がうれしい?
-
よく使う処理をまとめられる
-
他のプログラムでも使い回せる
- 修正が1か所で済む
練習問題
ファイル構成
mymodule.py
main.py に正しいインポート文を追加して hello() を呼び出してください。
選択肢
A)
import hello
B)
from mymodule import hello
C)
import mymodule.hello
D)
import mymodule then hello()

解答
B)
from mymodule import hello
解説
-
helloは関数名 -
ファイル名は
mymodule.py
だから mymodule から hello を取り出す
👉 正解は
B)
from mymodule import hello
✅ ポイント
-
.pyファイルはすべてモジュールとして利用できる -
importでモジュールごと読み込み -
from モジュール名 import 関数名
-
asで名前を短くできる -
同じディレクトリに置くとインポートが簡単
次回予告
Day49では「例外処理の基本(try, except)」です。
プログラムで発生するエラーを安全に処理するための仕組みを学びましょう。
参考
Python 3 エンジニア認定基礎試験 – Odyssey CBT
Python3 エンジニア認定基礎試験 出題範囲と学習プラン
Python3 エンジニア認定基礎試験 練習問題 Day1:変数の基本
Python3 エンジニア認定基礎試験 練習問題 Day2:変数の型(int型とstr型)
Python3 エンジニア認定基礎試験 練習問題 Day3:算術演算子と代入演算子
Python3 エンジニア認定基礎試験 練習問題 Day4:文字列の操作
Python3 エンジニア認定基礎試験 練習問題 Day5:比較演算子と論理演算子
Python3 エンジニア認定基礎試験 練習問題 Day6:if文(条件分岐)
Python3 エンジニア認定基礎試験 練習問題 Day7:ループ処理(for文・while文)
Python3 エンジニア認定基礎試験 練習問題 Day8:break文とcontinue文
Python3 エンジニア認定基礎試験 練習問題 Day9:リスト(list)の基本
Python3 エンジニア認定基礎試験 練習問題 Day10:リストの操作(append,remove,len など)
Python3 エンジニア認定基礎試験 練習問題 Day11:リストのスライス(部分取り出し)
Python3 エンジニア認定基礎試験 練習問題 Day12:タプル(tuple)の基本
Python3 エンジニア認定基礎試験 練習問題 Day13:辞書(dict)の基本
Python3 エンジニア認定基礎試験 練習問題 Day14:集合(set)の基本
Python3 エンジニア認定基礎試験 練習問題 Day15:関数の定義と呼び出し
Python3 エンジニア認定基礎試験 練習問題 Day16:関数のデフォルト引数とキーワード引数
Python3 エンジニア認定基礎試験 練習問題 Day17:可変長引数(*args, **kwargs)
Python3 エンジニア認定基礎試験 練習問題 Day18:関数のスコープ(ローカル変数とグローバル変数)
Python3 エンジニア認定基礎試験 練習問題 Day19:ネスト関数(関数の中の関数)
Python3 エンジニア認定基礎試験 練習問題 Day20:ラムダ式(無名関数)
Python3 エンジニア認定基礎試験 練習問題 Day21:組み込み関数(len, type, range など)
Python3 エンジニア認定基礎試験 練習問題 Day22:組み込み関数(sum,max,min,sorted)
Python3 エンジニア認定基礎試験 練習問題 Day23:文字列と組み込み関数(len,str,int,float)
Python3 エンジニア認定基礎試験 練習問題 Day24:組み込み関数(abs, round, pow)
Python3 エンジニア認定基礎試験 練習問題 Day25:組み込み関数(sorted の応用と key 引数)
Python3 エンジニア認定基礎試験 練習問題 Day26:組み込み関数(enumerate, zip)
Python3 エンジニア認定基礎試験 練習問題 Day27:組み込み関数(map, filter, reduce)
Python3 エンジニア認定基礎試験 練習問題 Day28:組み込み関数(any, all)
Python3 エンジニア認定基礎試験 練習問題 Day29:組み込み関数(isinstance,issubclass)
Python3 エンジニア認定基礎試験 練習問題 Day30:組み込み関数(callable, eval)
Python3 エンジニア認定基礎試験 練習問題 Day31:組み込み関数(dir, help)
Python3 エンジニア認定基礎試験 練習問題 Day32:組み込み関数(id, hash)
Python3 エンジニア認定基礎試験 練習問題 Day33:組み込み関数(repr, format)
Python3 エンジニア認定基礎試験 練習問題 Day34:組み込み関数(globals, locals)
Python3 エンジニア認定基礎試験 練習問題 Day35:組み込み関数(vars, callable)
Python3 エンジニア認定基礎試験 練習問題 Day36:組み込み関数(reversed, slice)
Python3 エンジニア認定基礎試験 練習問題 Day37:組み込み関数(getattr, setattr, hasattr, delattr)
Python3 エンジニア認定基礎試験 練習問題 Day38:組み込み関数(eval, exec, compile)
Python3 エンジニア認定基礎試験 練習問題 Day39:組み込み関数(zip の応用・辞書との組み合わせ)
Python3 エンジニア認定基礎試験 練習問題 Day40:モジュールの基本(import と from の違い)
Python3 エンジニア認定基礎試験 練習問題 Day41:as(別名インポート)と import の仕組み
Python3 エンジニア認定基礎試験 練習問題 Day42:標準ライブラリ(math モジュールの基本)
Python3 エンジニア認定基礎試験 練習問題 Day43:標準ライブラリ(random モジュールの活用)
Python3 エンジニア認定基礎試験 練習問題 Day44:標準ライブラリ(datetime モジュールの使い方)
Python3 エンジニア認定基礎試験 練習問題 Day45:標準ライブラリ(os と sys)
Python3 エンジニア認定基礎試験 練習問題 Day46:標準ライブラリ(pathlib とファイルパス操作)
Python3 エンジニア認定基礎試験 練習問題 Day47:パッケージ構造と __init__.py
Python3 エンジニア認定基礎試験 練習問題 Day48:自作モジュールの作成とインポート
Python3 エンジニア認定基礎試験 練習問題 Day49:例外処理の基本(try, except)
Python3 エンジニア認定基礎試験 練習問題 Day50:複数例外の処理と except as