1. 2500 円は既定の予算 3000 円に収まる
  2. 3500 円は既定の予算を超える
  3. 3000 円ちょうどはオーバーではない
  4. 予算を 4000 円に上書きすると 3500 円は収まる
  5. 0 円は必ず予算内
コース一覧
Python入門:基礎文法編
デフォルト引数

Python入門:基礎文法編

変数、条件分岐、ループ、関数、リスト・辞書、ファイル操作など Python の基礎文法を、ブラウザ上で毎レッスン実際にコードを書き、自分だけの「おこづかい帳アプリ」を育てながら学べる無料コースです。プログラミング完全未経験から始められ、環境構築や事前知識は一切不要です。約 18 時間 (1 日 30 分 × 37 日) で 74 レッスンを修了でき、修了後は入力・集計・ファイル保存まで備えたスクリプトを1から書けるようになります。

1
はじめての Python
01. printで表示15分
02. 文字列の連結15分
03. 四則演算15分
04. 実行順序15分
05. コメント15分
06. エラーを読んでみる15分
07. つくる:レシート表示15分
08. 第1章クイズ10分
2
変数とデータ型
01. 変数15分
02. typeで型を調べる15分
03. 数値への変換15分
04. 文字列への変換15分
05. boolとNone15分
06. f-string15分
07. 入力を受け取る15分
08. つくる:入力できるおこづかい帳15分
09. 第2章クイズ10分
3
演算子と式
01. 比較演算子15分
02. 論理演算子15分
03. in演算子15分
04. 剰余と切り捨て除算15分
05. 連鎖比較と優先順位15分
06. 三項演算子15分
07. つくる:予算チェック15分
08. 第3章クイズ10分
4
条件分岐
01. if文の基本15分
02. if / elif / else15分
03. 条件の組み合わせ15分
04. match文15分
05. 定番:FizzBuzz判定15分
06. デフォルト値とor15分
07. つくる:カテゴリ自動判定15分
08. 第4章クイズ10分
5
ループ
01. forで合計15分
02. whileで繰り返す15分
03. rangeとstep15分
04. breakとcontinue15分
05. enumerateで番号付け15分
06. zipで組み合わせ15分
07. 入れ子ループ15分
08. つくる:何件でも記録15分
09. 第5章クイズ10分
6
関数
01. 関数を定義する15分
02. 引数と戻り値15分
03. デフォルト引数15分
04. キーワード引数15分
05. 複数の戻り値15分
06. divmod15分
07. 変数のスコープ15分
08. lambda関数15分
09. つくる:関数に分割15分
10. 第6章クイズ10分
7
リストと辞書
01. リストの追加と削除15分
02. スライス15分
03. 辞書の基本15分
04. 辞書を走査15分
05. keyでソート15分
06. setで重複除去15分
07. リスト内包表記15分
08. タプルアンパック15分
09. つくる:カテゴリ別集計15分
10. 第7章クイズ10分
8
ファイルとエラー処理
01. ファイルを読み込む15分
02. ファイルに書き込む15分
03. withで安全に扱う15分
04. CSV形式で保存15分
05. try-exceptで備える15分
06. 例外の種類15分
07. つくる:保存機能15分
08. 第8章クイズ10分
9
総合制作
01. 全機能を統合しよう15分
02. 月間レポート機能15分
03. 自由拡張15分
04. 完成と次のステップ10分

デフォルト引数

デフォルト引数

毎回 3000 と書くのが面倒で、しかも書き間違える

おこづかい帳の予算は、ふだんは 3000 円で固定です。それでも呼び出すたびに 3000 と書くのは面倒ですし、あるとき 300 と打ち間違えても誰も教えてくれません。

こういうときは、引数に 既定値 を持たせます。渡さなかったときに使われる値をあらかじめ決めておく仕組みで、デフォルト引数と呼びます。書き方は、引数名のうしろに = と値を書くだけです。

Python

def yen(price, unit="円"): return str(price) + unit print(yen(120)) print(yen(120, "pt"))

120円 と 120pt が出ます。渡さなければ既定値の "円" が使われ、渡せばそちらが優先されます。よく使う値を既定値にしておくと呼び出し側が短くなり、短いコードはそれだけで間違いが減ります。

既定値のある引数は後ろにまとめる

既定値のない引数より前に、既定値のある引数を置くことはできません。

Python

def bad(unit="円", price): return str(price) + unit

これは実行する前に SyntaxError になり、non-default argument follows default argument と出ます。値は前から順に詰まっていくので、途中だけ飛ばすことができないためです。

解説

既定値は、関数を定義したときに 1 回だけ作られ、その後ずっと使い回されます。数値や文字列なら問題になりませんが、リストや辞書を既定値にすると、前の呼び出しで足した中身が次の呼び出しにも残ります。原因の分からないバグで丸一日溶かす、実務でも定番の事故です。

ちょうど予算どおりは、オーバーか

境目の扱いは、書き始める前に自分で決めて書き残します。決めていないと、テストを書くたびに答えが揺れます。

比較の結果はそのまま True か False になるので、if で分岐しなくても、比較の式そのものを返せます。

Python

print(3500 > 3000) print(3000 > 3000) print(3000 >= 3000)

True False True の順に出ます。> と >= のどちらを選ぶかで、ちょうどの値の扱いが真逆になります。

やってみよう

関数 check_over(total, budget=3000) を実装してください。合計金額 total が予算 budget を 超えていたら True、そうでなければ False を返します。budget の既定値は 3000 です。

total と budget がちょうど同じときは False です。手元では check_over(2500) と check_over(3500) と check_over(1000, 500) の 3 つを試して、既定値が使われる場合と上書きされる場合の違いを見てください。

要件

  1. 関数名は check_over で、引数は total と budget の 2 つ
  2. budget の既定値は 3000 にする
  3. total が budget を超えていたら True、そうでなければ False を返す
  4. total と budget が同じ値のときは False を返す

入出力例

check_over(2500) → false check_over(3500) → true check_over(3000) → false check_over(3500, 4000) → false check_over(0) → false

ヒント

def check_over(total, budget=3000): のように = で既定値を書きます

比較演算子 > の結果はそのまま True か False になります

if を書かずに return total > budget の 1 行で済みます

>= にするとちょうど同額のときに True になってしまいます

生田 陸人
監修生田 陸人
ゆめさくエンジニア / 現役ソフトウェアエンジニア監修者プロフィールを見る →
編集 ゆめさく編集部·公開 2026/08/05·更新 2026/08/26

関連レッスン

  • キーワード引数

    引数を名前で指定して渡す。表示形式を切り替えられる format_record を作る

  • 複数の戻り値

    1 つの関数から 2 つの値をまとめて返す。合計と平均を返す total_and_average を作る

  • divmod

    divmod で商と余りを 1 回の呼び出しで得る。割り勘の結果を返す split_even を作る

  • 変数のスコープ

    ローカル変数とグローバル変数の違い。外を書き換えるバグを引数と戻り値の形に直す

このレッスンに出てくる用語

意味があいまいなまま進んだ語は、ここから読み直せます。

  • 引数位置引数=順番で渡す。
  • デフォルト引数引数省略時の値を = で指定する記法
  • 関数処理に名前を付けて再利用できる単位
  • リスト順序付きで複数の値を扱うデータ構造
  • テストバグを見つける工程
main.py
学習モード
エディタを読み込んでいます

メモ

デフォルト引数

⌘S で保存