キーワード引数は関数呼び出し時に引数名を指定し、その引数に値を渡す機能です。例えば次のコードにはad、skillという2つの引数を持つattack関数が定義されています。
def attack(ad = 100, skill = 2): damage = ad * skill print("勇者は" + str(damage) + "のダメージを与えた")
この関数を呼び出す際に引数を1つしか渡さなかった場合どうなるでしょうか。
実際にやってみましょう。
def attack(ad = 100, skill = 2): damage = ad * skill print("勇者は" + str(damage) + "のダメージを与えた") attack(200)
実行結果は次のとおりです。
勇者は400のダメージを与えた
関数を呼び出す際に指定した200という値が第一引数であるadに渡されているのがわかります。
このように関数を呼び出す際に渡した引数が定義した引数よりも少ない場合、第一引数、第二引数、第三引数…と、最初に定義した引数から順番に値が代入されます。
では第一引数にはデフォルト値を使用し、第二引数の方のみ関数呼び出しで値を渡したい場合はどうすればいいのでしょうか。
そこで便利なのがキーワード引数です。キーワード引数を使用する場合は次のように、関数呼び出し時に引数名と値を指定します。
関数名(引数名 = 値)
実際にattack関数を呼び出して、第二引数のみに値を渡して実行してみましょう。
def attack(ad = 100, skill = 2): damage = ad * skill print("勇者は" + str(damage) + "のダメージを与えた") attack(skill = 3)
実行結果は次のようになります。
勇者は300のダメージを与えた
第二引数であるskillに3という値が代入されているのがわかります。キーワード引数ではこのように引数名を指定して値を代入します。
どの引数に渡す値なのかを指定できるので、関数呼び出しの際に記述する引数の順番を変えることもできます。
また、キーワード引数を使用して値を渡した場合、値が渡されなかった引数にデフォルト値が指定されていればデフォルト値を使って処理をしてくれます。
上記の例ではskill引数には3という値を渡していますが、ad引数には値を渡していないためデフォルト値である100を使用して処理が行われています。