前回までは基本的な関数の定義方法について確認してきました。今回はPythonで使用できる特殊な書き方の一つであるデフォルト引数について確認していきます。
デフォルト引数とは
デフォルト引数とはその名の通り、あらかじめ引数の値を持たせておくことができる機能です。特に引数にデータを渡さなくても引数の初期値を使用して処理を実施できるというわけです。

デフォルト引数は初期値を有しているので、呼び出し側で引数を省略してもエラーなく実行できます。もちろん引数を渡して関数を呼び出すことも可能です。

デフォルト引数の書き方
それではデフォルト引数の書き方について確認します。関数側の定義は以下のようになります。
def 関数名 (引数名 = 初期値) :
処理をブロック内に記載
引数名を指定し、そこに”=”で初期値となる値を指定します。こう記載することで、関数の呼び出しの際に引数が指定されなかった場合、初期値に設定した値が引数として関数にわたります。
デフォルト引数は通常の引数と混合して定義することが可能です。ただし、引数を定義する順番に注意する必要があります。デフォルト引数は通常の引数の後に、定義する必要があります。先にデフォルト引数を定義するとエラーとなります。
1 2 3 4 5 6 7 8 9 10 11 |
def PrintTxt(string = "Hello",txt): print(string + txt) PrintTxt("hello") """ ※※※ERROR発生!!※※※ SyntaxError: non-default argument follows default argument ※※※ERROR発生!!※※※ """ |
そのため、必ず引き渡しが必須の引数は先に、省略可能なデフォルト引数は後ろに記載する必要があります。
#通常の引数、デフォルト引数、両方使った関数の定義方法
def 関数名 (引数1 , 引数2 , 引数名 = 初期値) :
処理をブロック内に記載
デフォルト引数の例
最後にデフォルト引数を使用した関数の例を確認します。よくあるのが、起動モードを関数のデフォルトで指定しておき、初期値を”normal”といった値にしておくことです。そうすれば通常時は通常モードで起動し、通常とは異なる時だけ”advance”といったような値を指定し特殊な処理ルートで起動できるようになります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
def confirm_info(keylist,valuelist,mode = "normal"): #モードを確認 if mode == "normal": print("名前を表示します。") count = 0 while count < 3: print(keylist[count] + " : " + valuelist[count]) count += 1 if mode == "advance": print("個人情報の詳細を表示します。") cont = 0 while count < 5 : print(keylist[count] + " : " + valuelist[count]) count += 1 #数値リストを定義 keylist = ["名前","性別","年齢","住所","電話番号"] valuelist = ["山田太郎" , "男" , "16" , "東京都新宿区" , "0120-117-117"] #関数呼び出し ave = confirm_info(keylist , valuelist) |
上記のコードは通常モードなら名前と年齢だけ、上位モードなら詳細な個人情報を表示する、といった感じです。デフォルト引数はプログラムを起動する際に通常よりは少ないけれどデータとして渡したいときがあるという場合に便利ですので抑えておきましょう。
今回はここまでです。
お疲れ様でした。
コメント