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')
おしまい。
コメント