<一覧に戻る

デフォルト引数

デフォルト引数は、関数を定義する際に引数に初期値を設定できる機能です。これにより、関数を呼び出す際に引数を省略できるため、柔軟性が向上します。この教材では、デフォルト引数の基本的な使い方とそのメリットについて学びます。

デフォルト引数の定義

デフォルト引数は、関数の定義時に引数に値を設定することで定義します。以下のサンプルコードを見てみましょう。

def greet(name="ゲスト"):
    print(f"こんにちは、{name}さん!")

greet()              # 引数を省略
greet("太郎")       # 引数を指定

解説

  • greet関数は、nameという引数を持ち、デフォルト値として"ゲスト"を設定しています。
  • 最初の呼び出しgreet()では、引数を省略したため、デフォルト値"ゲスト"が使用されます。出力は「こんにちは、ゲストさん!」になります。
  • 2回目の呼び出しgreet("太郎")では、引数"太郎"が指定され、出力は「こんにちは、太郎さん!」になります。

デフォルト引数のメリット

デフォルト引数を使用することで、以下のようなメリットがあります。

  1. 簡潔さ: 省略可能な引数を持つことで、関数の呼び出しが簡潔になります。
  2. 柔軟性: 必要に応じて引数を指定したり、デフォルト値を利用したりできます。
  3. コードの可読性: どの引数がデフォルト値を持つかが明示的になるため、コードの理解が容易になります。

デフォルト引数の注意点

デフォルト引数を使用する際には、いくつかの注意点があります。

  • デフォルト引数には、ミュータブル(変更可能)なオブジェクト(リストや辞書など)を使用する際に注意が必要です。デフォルト引数は関数が定義された時点で評価されるため、状態が変わる可能性があります。

以下の例を見てみましょう。

def append_to_list(value, my_list=[]):
    my_list.append(value)
    return my_list

print(append_to_list(1))  # [1]
print(append_to_list(2))  # [1, 2]
print(append_to_list(3, []))  # [3]

解説

  • append_to_list関数は、my_listというデフォルト引数を持ち、デフォルトでは空のリストが設定されています。
  • 最初の呼び出しappend_to_list(1)では、デフォルトのリストに1が追加されて、リストは[1]になります。
  • 2回目の呼び出しappend_to_list(2)では、同じリストに2が追加され、リストは[1, 2]となります。
  • 3回目の呼び出しでは、新しい空のリストを指定したため、出力は[3]となります。

このように、デフォルト引数にミュータブルなオブジェクトを使用すると、予期しない結果が生じることがあります。ミュータブルなオブジェクトをデフォルト引数として使用する際には、注意が必要です。

まとめ

デフォルト引数は、関数をより柔軟で使いやすくするための強力な機能です。引数を省略可能にすることで、関数の呼び出しを簡潔にし、コードの可読性を向上させることができます。ただし、ミュータブルなオブジェクトをデフォルト引数として使用する際は、注意が必要です。

出力結果: