(Python)関数の引数の*とか**とか
def f(a, b, c, d=0, e=0): print(a + b + c + d + e) # => 15 def f_args(*args): print(type(args)) # => <class 'tuple'> print(args) # => (1, 2, 3) def f_kwargs(**kwargs): print(type(kwargs)) # => <class 'dict'> print(kwargs) # => {'a': 1, 'b': 2, 'c': 3} array = [1, 2, 3] dictionary = {'d': 4, 'e': 5} # (1) f(*array, **dictionary) # (2) f_args(1, 2, 3) # (3) f_kwargs(a=1, b=2, c=3)
慣習として、配列の仮引数名は*args
、辞書の仮引数名は**kwargs
を使う。
(1) 配列は、通常の引数に展開される。辞書は、キーワード引数に展開される。
(2) 通常の実引数は、タプルにマッピングされる。
(3) キーワード引数の実引数は、辞書にマッピングされる。