引数リストのアンパック

例えば、リストやタプルの要素を個別に関数へ引数を渡す処理を実装したいとします。

愚直に書くと以下のようになります。

def foo(a,b,c,d):
    print(a + b + c + d)

ary = [2,4,6,8]

foo(ary[0],ary[1],ary[2],ary[3])
$ py main.py
20


いちいちary[0]とかを並べて書くのが面倒ですね、そんな時は*演算子を使って引数リストのアンパックをすることができます

def foo(a,b,c,d):
    print(a + b + c + d)

ary = [2,4,6,8]

foo(*ary) # foo(ary[0],ary[1],ary[2],ary[3])と同じ意味
$ py main.py
20

とっても便利ですね。


辞書でも同じようなことができます。辞書の場合は**演算子を使います

def foo(a,b,c,d):
    print(a + b + c + d)

h = {"a":2,"b":4,"c":6,"d":8}

foo(**h) # foo(h["a"],h["b"],h["c"],h["d"])と同じ意味
$ py main.py
20