Pythonの*argsと**kwargsについて簡単に説明

pythonの引数でよく登場する*argsと*kwargsについて実際にプログラムを書きながら簡単に説明してみる。

文字で説明すると

  • *argsはなんでもありの引数
  • **kwargsは辞書型の引数なんでもあり

テストコード

以下のようなシンプルなコードを書いて実行してみます。

def function(*args, **kwargs):
	print(args)
	print(kwargs)


if __name__ == '__main__':
	function('a', 1, c=2, d='hello, world')

実行結果は次の通り。

('a', 1)
{'c': 2, 'd': 'hello, world'}

こんな感じでargsにはタプル型で渡した値が格納され、kwargsには辞書型で値が渡される。よって以下のようにコードを書き換えることで関数ないでそれぞれ1つずつ値を取り出すことも可能。

def function(*args, **kwargs):
	print(args[0])
	print(args[1])
	print(kwargs['c'])
	print(kwargs['d'])


if __name__ == '__main__':
	function('a', 1, c=2, d='hello, world')

実行結果は以下の通り

a
1
2
hello, world

それぞれの値を一個ずつ取り出せた!!

おまけ

別にargsやkwargsという名前にこだわる必要はなくて、*の数でその引数の役割が決まる。以下のようなコードでも先ほどと実行結果は変わらない。

def function(*tekitou, **kwtekitou):
	print(tekitou[0])
	print(tekitou[1])
	print(kwtekitou['c'])
	print(kwtekitou['d'])


if __name__ == '__main__':
	function('a', 1, c=2, d='hello, world')

おしまい。

コメント

タイトルとURLをコピーしました