コース一覧
    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分

    キーワード引数

    キーワード引数

    True が何の True か分からない

    引数が増えてくると、呼び出し側の見た目がこうなります。

    Python

    make_line("りんご", 120, "食費", True)

    最後の True が何の True なのか、この行だけでは分かりません。関数の定義を見に行かないと読めないコードは、それだけであとの手間になります。

    Python には、引数を 名前で指定して渡す 書き方があります。これをキーワード引数と呼びます。

    Python

    def title(text, line=False):
        if line:
            return "=== " + text + " ==="
        return text
    
    print(title("おこづかい帳", line=True))

    line=True と書いてあるので、この True が何のためのものか一目で分かります。呼び出し側に 1 語足すだけで、定義を見に行かずに読めるようになります。

    解説

    コードは書く時間より読む時間のほうがずっと長いです。読んだだけで意味が分かる呼び出しを書けると、あとの自分が助かります。

    名札を付ければ、順番は自由

    位置引数は前から順に詰まるので順番を変えられませんが、名前で指定したものは名札が付いているので取り違えようがありません。

    Python

    def date_label(day, month=8, year=2026):
        return str(year) + "/" + str(month) + "/" + str(day)
    
    print(date_label(24, year=2025, month=3))
    print(date_label(24, month=3, year=2025))

    2 行とも 2025/3/24 になります。名前で渡すぶんには、書く順番は結果に影響しません。

    引数名を打ち間違えると TypeError になり、unexpected keyword argument と出ます。定義側の綴りを見に行けばすぐ直せます。

    名前なしの引数が先

    混ぜて書くときは、名前なしの引数が必ず先です。date_label(day=24, 3) は SyntaxError になり、positional argument follows keyword argument と出ます。先に名札付きを置いてしまうと、そのあとの値がどこに入るべきか決められなくなるためです。

    同じ引数へ位置とキーワードの両方から値を渡すのも TypeError です。date_label(24, 3, year=2025) なら問題ありませんが、date_label(24, 3, 2025, year=2024) は year に 2 回値が来てしまいます。どちらか片方にします。

    やってみよう

    関数 format_record(name, price, category="その他", show_category=False) を実装してください。品名 name と金額 price から "りんご 120円" の形の 1 行を作って return します。

    show_category が True のときだけ、うしろに半角スペースと (食費) のようなカテゴリを足します。かっこは半角、スペースは半角 1 つです。category の既定値は "その他"、show_category の既定値は False です。

    手元では format_record("りんご", 120) と format_record("りんご", 120, category="食費", show_category=True) の 2 通りを試して、名前で渡す読みやすさを確かめてみてください。

    要件

    1. 関数名は format_record で、引数は name, price, category, show_category の 4 つ
    2. category の既定値は "その他"、show_category の既定値は False
    3. 基本の形は "品名 金額円" で、品名と金額の間は半角スペース 1 つ
    4. show_category が True のときだけ、うしろに半角スペースと半角かっこでカテゴリを足す

    ヒント

    金額は数値なので str(price) で文字列にしてから連結します

    if show_category: と書けば True のときだけ通ります

    カテゴリ部分は " (" + category + ")" の形でつなぎます

    かっことスペースはすべて半角です

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

    関連レッスン

    • 複数の戻り値

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

    • divmod

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

    • 変数のスコープ

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

    • lambda関数

      名前のない小さな関数を式で書く。sorted の key に渡して金額順に並べ替える

    main.py
    エディタを読み込んでいます

    メモ

    キーワード引数

    ⌘S で保存