Python 可変長引数 (*args, ** kwargs)

関数の引数を可変長にする方法を記載します。


関数の定義で、引数の前にアスタリスクを使用することで、可変長引数にすることができます。アスタリスク1つと2つで引数の型・使用方法が違います。

  • *args : アスタリスク1つは、タプルで複数の引数が受け取れる
  • **kwargs : アスタリスク2つは、辞書でキーワード引数が受け取れる

可変長引数の名前にはargsとkwargsがよく使われます。

実例 (*args)

def test(*args): # 可変長の引数をタプルで受け取る
      diff = max(args) - min(args)
      return diff

test(100, 32, 89)
>> 68

実例 (**kwargs)

def test2(**kwargs):
    for k, v in kwargs.items():
      print(k + ': ' + v)
  
test2(arg_1='apple', arg_2='lemon', arg_3='banana') #キーワード引数を設定
>> arg_1: apple 
>> arg_2: lemon 
>> arg_3: banana

メリット・デメリット

これらの可変長引数は、主に複数の引数を1つのまとまりとして捉えて処理をする場合に使われます。**kwargsを使えば、多くの引数を関数に渡す場合、関数定義をすっきり記載できるというメリットもあります。

一方で、関数内でkwargsに設定していないkeyを使用してしまうと実行時エラーになるため、注意が必要です。


関連記事