コース一覧
    Pythonループ・関数
    デフォルト引数

    Pythonループ・関数

    ループと関数の基本を学び、繰り返し処理を分割して読みやすく書けるようにします。

    1
    ループ
    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分
    2
    関数
    01. 関数を定義する15分
    02. 引数と戻り値15分
    03. デフォルト引数15分
    04. キーワード引数15分
    05. 複数の戻り値15分
    06. divmod15分
    07. 変数のスコープ15分
    08. lambda関数15分
    09. つくる:関数に分割15分
    10. 第6章クイズ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 を返す

    ヒント

    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 で保存