関数の引数に *args
や **kwds
を指定した場合の挙動をいつも忘れてしまうので,例と共に書いておく.
上のような関数は, args
は変数名なしの引数をタプルとして受け取り,
kwds
は変数名付きで辞書型として受け取る.
::: parsed-literal (1, 2, 3, 4) {‘a’: ‘a’, ‘b’: ‘b’} :::
下のように,タプルと辞書を明示的に渡してやっても,受け取り側は二つの変数名なしの変数を受け取ったと考えるので,
*args
として (arr,dic)
を受け取ったと解釈する.
::: parsed-literal ((1, 2, 3, 4), {‘a’: 10, ‘b’: 20}) {} :::
以下のようにすると arr
を展開して args
として, dic
を展開して
kwds
として渡すことができる.
::: parsed-literal (1, 2, 3, 4) {‘a’: 10, ‘b’: 20} :::