キーワード引数を使って関数を呼び出す

引数を指定して関数を呼び出す時に、値だけを指定するのではなく関数側で定義されている仮引数の名前を使って 仮引数の名前=値 の形式で指定することができます。このような形式をキーワード引数と呼びます。ここではキーワード引数を使って関数を呼び出す方法について解説します。

(Last modified: )

位置引数とキーワード引数

引数を指定して関数を呼び出す場合、呼び出し側で指定した引数の値が順番に関数側で引数のところに定義した変数に順番に代入されます。このような形式を位置引数と呼びます。

def 関数名(仮引数1, 仮引数2):
    ....
    return

関数名(実引数1, 実引数2)

位置引数の場合、引数を記載した順番に従って引数の値が渡されますので、実引数1は仮引数1へ渡され、実引数2は仮引数2へ渡されます。

それに対してキーワード引数の形式では、関数を呼び出す側でどの仮引数にどの値を渡すのかを 仮引数の名前=値 の形式で指定します。

def 関数名(仮引数1, 仮引数2):
    ....
    return

関数名(仮引数1=実引数1, 仮引数2=実引数2)

キーワード引数の場合、関数側のどの仮引数に対して値を渡すのかが指定されていますので引数を記述する順番は任意となります。よって次のように順番を逆にしても構いません。

def 関数名(仮引数1, 仮引数2):
    ....
    return

関数名(仮引数2=実引数2, 仮引数1=実引数1)
サンプルコード

次のサンプルを見てください。

def myfunc(num1, str1):
    print("num1=" + str(num1))
    print("str1=" + str1)

myfunc(num1=10, str1="Orange")
>> num1=10
>> str1=Orange

myfunc(str1="Lemon", num1=15)
>> num1=15
>> str1=Lemon

キーワード引数の形式で関数を呼び出しています。キーワード引数の形式の場合は、引数を記述する順番は自由です。

位置引数とキーワード引数を混在させる

位置引数とキーワード引数を混在させて関数を呼び出すこともできます。その場合は最初に位置引数を指定し、その後でキーワード引数を記述してください。

def 関数名(仮引数1, 仮引数2, 仮引数3):
    ....
    return

関数名(実引数1, 仮引数2=実引数2, 仮引数3=実引数3)

キーワード引数のあとに仮引数名が指定されていない引数を指定した場合は SyntaxError: positional argument follows keyword argument というエラーとなります。

キーワード引数はどういったケースで利用されるのが有用なのかは分かりませんが、引数の数が非常に多く、どの引数に対する値なのかを明確にしたい場合などには有効かもしれません。

サンプルコード

次のサンプルを見てください。

def myfunc(old, name, address):
    print("年齢は" + str(old) + "です。", end='')
    print("名前は" + name + "です。", end='')
    print("住所は" + address + "です。")

myfunc(28, "Suzuki", "Tokyo")
>> 年齢は28です。名前はSuzukiです。住所はTokyoです。

myfunc(address="Osaka", old=25, name="Yamada")
>> 年齢は25です。名前はYamadaです。住所はOsakaです。

myfunc(32, address="Kyoto", name="Honda")
>> 年齢は32です。名前はHondaです。住所はKyotoです。

最初に通常の形式で関数を呼び出し、次にキーワード引数の形式で関数を呼び出しています。最後に通常の形式とキーワード形式を混在させて関数を呼び出しています。

-- --

キーワード引数を使って関数を呼び出す方法について解説しました。

( Written by Tatsuo Ikura )

プロフィール画像

著者 / TATSUO IKURA

これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。