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

広告
eyecatch

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

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

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

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 というエラーとなります。

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

サンプルプログラム

それでは簡単なサンプルプログラムを作って試してみます。テキストエディタで次のように記述したあと、 sample6-1.py という名前で保存します。

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

myfunc(28, "Suzuki", "Tokyo")
myfunc(address="Osaka", old=25, name="Yamada")
myfunc(32, address="Kyoto", name="Honda")

その後で、次のように実行してください。

python sample6-1.py

位置引数とキーワード引数(1)

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

-- --

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

( Written by Tatsuo Ikura )

関連記事 (一部広告含む)
Profile
profile_img

著者 / TATSUO IKURA

初心者~中級者の方を対象としたプログラミング方法や開発環境の構築の解説を行うサイトの運営を行っています。