📚 Python学習ロードマップ
(初心者→ログ設計まで体系的に学べます)
https://run-ride-code.com/python-selfstudy-roadmap/
はじめに
これまでの学習では
- 計算結果を dict(stats)にまとめる
- ログ出力を 関数にして再利用する
- 平均値(avg)から ログレベル(OK / WARN / ERROR)を自動判定する
といった形で
ログを整理して出力する仕組みを作ってきました。
前回の記事では
👉 判断(ログレベルの決定)をコードに任せる
という考え方を学びました。
今回はさらに一歩進めて
👉 ログの「見せ方」を関数の引数で切り替える
方法を学習します。

今回のゴール
今回の学習目標は次の通りです。
- 関数に 引数(mode) を追加する
- 引数によって ログ出力内容を変更する
- 同じデータでも 用途に応じて表示を切り替える
- ログレベル自動判定と組み合わせて使う
つまり今回のテーマは
判断(level)と表示(mode)を分けて設計する
という考え方です。
使用するデータ
今回もこれまで使用してきた stats を使います。
stats = {
'count': 20,
'sum': 980,
'avg': 49,
'level': 'WARN' # 仮の値
}
ログレベル自動判定(復習)
まず平均値 avg を使って
ログレベルを自動で決めます。
if stats['avg'] >= 70:
stats['level'] = 'OK'
elif stats['avg'] >= 50:
stats['level'] = 'WARN'
else:
stats['level'] = 'ERROR'
この処理により
👉 人が判断しなくてもコードが評価を決定します。
Pythonログ出力関数を作る
ここからが今回のメインです。
関数の引数 mode を使って
ログ出力の内容を切り替える関数を作ります。
def log_stats(stats, mode='all'):
allowed_modes = ['all', 'avg', 'count_sum', 'summary']
message = f"[{stats['level']}]"
if mode == 'all':
message += f" count={stats['count']} sum={stats['sum']} avg={stats['avg']}"
elif mode == 'avg':
message += f" avg={stats['avg']}"
elif mode == 'count_sum':
message += f" count={stats['count']} sum={stats['sum']}"
elif mode == 'summary':
message += f" avg={stats['avg']}"
else:
message += f" unknown mode: {mode} (allowed: {', '.join(allowed_modes)})"
print(message)
mode引数とは?
mode は
どの情報を表示するか指定する引数
です。
| mode | 表示内容 |
|---|---|
| all | count / sum / avg をすべて表示 |
| avg | avg のみ表示 |
| count_sum | count と sum を表示 |
| summary | 状態確認用の簡易表示 |
実行例
log_stats(stats)
log_stats(stats, mode='avg')
log_stats(stats, mode='summary')
出力例(avg=49)
[ERROR] count=20 sum=980 avg=49
[ERROR] avg=49
[ERROR] avg=49
avgモードとsummaryモードの違い
現在は
avg
summary
どちらも同じ表示結果になります。
しかし意味は違います。
| mode | 目的 |
|---|---|
| avg | 数値として平均値を確認 |
| summary | 状態をざっくり確認 |
👉 表示は同じでも目的が違う
という考え方は
実務でもとても重要です。
unknown mode を用意する理由
もし存在しない mode が指定された場合でも
log_stats(stats, mode='banana')
次のように表示されます。
[ERROR] unknown mode: banana (allowed: all, avg, count_sum, summary)
この仕組みにより
- 何が間違っているのか
- どう修正すればよいのか
がすぐ分かります。
ログは
👉 未来の自分や他人が読むもの
なので
親切なメッセージ設計が重要です。
なぜ引数で切り替えるのか
この設計にすることで
- 関数を増やさずに済む
- 表示形式を簡単に追加できる
- 判定ロジックと表示ロジックを分離できる
というメリットがあります。
つまり
👉 変更に強いコード
になります。
今回の学び
今回学んだポイント
- 関数は 引数によって動作を変えられる
if / elif / elseは 条件分岐の基本- 判断(level)と表示(mode)を分けるとコードが整理される
- ログ設計がより実務に近づく
次のステップ
次の学習としては
- ログレベル判定を 関数化する
- 複数の stats データを ループ処理する
- ログを ファイルに保存する
などに進むと、さらに実践的になります。
📚 Python学習ロードマップ
(初心者→ログ設計まで体系的に学べます)
https://run-ride-code.com/python-selfstudy-roadmap/


コメント