Pythonの可変長引数について記載します。

Pythonは関数の引数に可変長の引数を使うことが出来ます。

まずアスタリスク一つを使う可変長引数について説明します。

def func1(*args):
    print(args)
    print(args[0])

func1(1,2,3,4)

上記のコードの実行結果は、下記のとおりです。

(1,2,3,4)
1

アスタリスク一つを使う可変長引数は、関数の引数がタプル型の値になります。つまり、1,2,3,4という値を関数func1の引数に入れると、関数の中ではタプル型変数(1,2,3,4)になります。

次に、アスタリスクを2つ使う可変長引数について説明します。

def func2(**kwargs):
    print(kwargs)
    print(kwargs['key'])

func2(key = 'value')

上記のコードの実行結果は、以下のとおりとなります。

{'key': 'value'}
value

アスタリスクを2つ使う可変長引数は、関数の引数が辞書型になります。つまり、key=valueという値を関数func2の引数に入れると、関数の中では辞書型変数{‘key’: ‘value’}になります。

今までのコードは以下のように書き換えも可能です。

def func1(*args):
    print(args)
    print(args[0])

def func2(**kwargs):
    print(kwargs)
    print(kwargs['key'])

args = (1,2,3,4)

func1(*args)

kwargs = {'key' : 'value'}

func2(**kwargs)

つまり、最初にargs = (1,2,3,4)というタプルを定義して、それにアスタリスクを一つつけてfunc1(*args)を実行すると、以下を実行するのと同じことになります。

func(1,2,3,4)

同様に、最初にkwargs = {‘key’ : ‘value’}という辞書型変数を定義して、それにアスタリスクを2つつけてfunc2(**kwargs)を実行すると、以下を実行するのと同じことになります。

func2(key = 'value')