このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。

【Python入門】引数にデフォルト値を指定する

引数にデフォルト値を指定する

 関数にデフォルト値を指定することで、関数呼び出し時に必ずしも全ての引数を渡す必要がなくなり、使いやすく柔軟な関数設計が可能になります。デフォルト値は、関数定義時に仮引数にあらかじめ設定され、呼び出し時に実引数が省略された場合に自動的に使用されます。
 ここでは、位置引数とデフォルト値の基本概念、定義時の注意点、そして実際のサンプルプログラム(ユーザ登録機能を例に)を通して、引数にデフォルト値を指定する方法を詳しく解説します。

プログラムのダウンロード

 「ダウンロード」から、JupyterLab で実行できるサンプルプログラムがダウンロードできます。ファイルは、ESET Endpoint Securityでウイルスチェックをしておりますが、ダウンロードとプログラムの実行は自己責任でお願いいたします。

1.基本概念と構文

1.1. デフォルト値の指定方法

関数の引数にデフォルト値を設定するには、仮引数に「=デフォルト値」を記述します。
基本的な構文は以下の通りです。

def 関数名(引数1, 引数2=デフォルト値2, ...):
    文...

解説

  • 仮引数でデフォルト値が指定されている場合、関数呼び出し時にその引数が省略されると、設定されたデフォルト値が自動的に使用されます。
  • デフォルト値がない引数(必須引数)は、必ずデフォルト値がある引数よりも左側に記述する必要があります。

1.2. 位置引数とデフォルト引数のルール

項目説明
必須引数(非デフォルト引数)呼び出し時に必ず値を渡す必要がある(定義時にデフォルト値がない)。
デフォルト引数定義時にあらかじめ値を設定しておき、呼び出し時に省略可能。
引数の記述順序必須引数を左に、デフォルト引数を右に記述することが必要です。

解説

  • 位置引数として、順番に値が渡されるため、呼び出し時には引数の順序が非常に重要です。
  • デフォルト引数を利用すると、よく使う引数は省略でき、必要な引数だけを明示的に渡すことで、柔軟に関数を呼び出すことができます。

2.サンプルプログラム:ユーザ登録機能

2.1. プログラムの概要

 ここでは、映画館の会員登録システムを例に、関数 register_user を定義します。この関数は、ユーザ名と年齢を必須の位置引数として受け取り、会員種別(membership)はデフォルト値 "standard" を設定します。呼び出し時に会員種別を省略すれば、デフォルトの "standard" が使用され、必要に応じて会員種別だけ変更することも可能です。

2.2. サンプルプログラム

def register_user(name, age, membership='standard'):
    """
    ユーザ登録を行う関数です。
    
    引数:
      name       : ユーザの名前(必須)
      age        : ユーザの年齢(必須)
      membership : 会員種別(省略時は 'standard')
    
    この関数は、登録情報を表示するだけで、実際の登録処理は未実装です。
    """
    print("User Registration:")
    print(" Name      :", name)
    print(" Age       :", age)
    print(" Membership:", membership)

# サンプル呼び出し例

# 1. すべての引数を指定しない場合、デフォルト値が適用される
register_user("Alice", 28)
# 出力例:
# User Registration:
#  Name      : Alice
#  Age       : 28
#  Membership: standard

# 2. すべての引数を位置引数として渡す場合
register_user("Bob", 35, "premium")
# 出力例:
# User Registration:
#  Name      : Bob
#  Age       : 35
#  Membership: premium

# 3. キーワード引数と組み合わせて呼び出す
register_user("Charlie", 22, membership="VIP")
# 出力例:
# User Registration:
#  Name      : Charlie
#  Age       : 22
#  Membership: VIP

実行結果

User Registration:
 Name      : Alice
 Age       : 28
 Membership: standard
User Registration:
 Name      : Bob
 Age       : 35
 Membership: premium
User Registration:
 Name      : Charlie
 Age       : 22
 Membership: VIP

解説

  • 関数定義
    def register_user(name, age, membership='standard'): のように、仮引数 membership にデフォルト値 "standard" を設定しています。
    ・ユーザ名と年齢は必須の位置引数として定義され、呼び出し時に必ず渡す必要があります。
  • 呼び出し例
    ・最初の呼び出しでは、nameage のみを指定しているため、membership はデフォルト値 "standard" が使用されます。
    ・2番目の呼び出しでは、すべての引数を位置引数として渡しており、順番通りに値が割り当てられます。
    ・3番目の呼び出しでは、キーワード引数を利用して membership の値を "VIP" に変更しています。
  • 出力
    ・それぞれの呼び出しで、関数内部のprint文により、渡された引数の値が明確に表示され、デフォルト値が正しく適用されることが確認できます。

まとめ

 関数にデフォルト値を指定することは、コードの柔軟性と再利用性を向上させるための基本的なテクニックです。

  • 基本構文: def 関数名(必須引数, 引数=デフォルト値, ...): と記述し、必要な引数だけを呼び出し時に指定できるようにします。
  • 引数の順序: 必須引数を先に、デフォルト引数を後ろに配置する必要があります。
  • 実践例: ユーザ登録システムのサンプルプログラムでは、ユーザ名と年齢という必須の位置引数に対し、会員種別のデフォルト値を設定し、関数呼び出し時に必要な部分だけを上書きできることが示されています。

 これらの知識を活かして、関数設計においてデフォルト値を適切に設定し、使いやすく保守性の高いコードを作成できるようになりましょう。