🟩 Python関数引数でログ出力を切り替える方法|mode引数で表示内容を変更する【初心者向け】

Python

📚 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表示内容
allcount / sum / avg をすべて表示
avgavg のみ表示
count_sumcount と 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/

コメント

タイトルとURLをコピーしました