【Python】リストやタプル、辞書の要素を展開して関数の引数に渡す方法を紹介!

  • 2020年4月22日
  • 2020年4月22日
  • Python

こんにちは!

リストやタプル、辞書の要素を1つずつ関数の引数に渡したいと思ったことはありませんか?

今回の記事では、以下の2つの方法を紹介します

  • リスト・タプルの要素を展開して関数の引数に渡す方法
  • 辞書の要素を展開して関数の引数に渡す方法

リスト・タプルの要素を展開して関数の引数に渡す

リストやタプルの前に「*」をつけて渡すことで、リストやタプルの要素を展開して渡すことができます。

以下のプログラムは、リストやタプルの要素を展開して関数の引数に渡すプログラムです。

def func(arg1, arg2, arg3):
    print(arg1)
    print(arg2)
    print(arg3)

#リスト
list = ['Python', '初心者の', '備忘録']
func(*list)

#タプル
tuple = ('Python', '初心者の', '備忘録')
func(*tuple)

実行結果

Python
初心者の
備忘録
Python
初心者の
備忘録
引数の数と要素数が一致していないとエラーが出てしまいます。

例)

以下のプログラムでは、関数の引数は3つなのに対して、渡す要素数が2つしかありません。

def func(arg1, arg2, arg3):
    print(arg1)
    print(arg2)
    print(arg3)

list = ['Python', '初心者']
func(*list)

実行結果

TypeError: func() missing 1 required positional argument: 'arg3'

辞書の要素を展開して関数の引数に渡す

辞書の前に「**」をつけて渡すことで、辞書のキーと関数の引数名が一致しているところに要素を渡すことができます。

以下のプログラムは、辞書の要素を展開して関数の引数に渡すプログラムです。

def func(arg1, arg2, arg3):
    print(arg1)
    print(arg2)
    print(arg3)

dict = {'arg1': 'Python', 'arg2': '初心者の', 'arg3': '備忘録'}

func(**dict)

実行結果

Python
初心者の
備忘録
辞書のキーと引数名が一致していないとエラーが出てしまいます。

例)

以下のプログラムでは、辞書のキー「arg100」が関数の引数名にありません。

def func(arg1, arg2, arg3):
    print(arg1)
    print(arg2)
    print(arg3)

dict = {'arg100': 'Python', 'arg2': '初心者の', 'arg3': '備忘録'}

func(**dict)

実行結果

TypeError: func() got an unexpected keyword argument 'arg100'

また、リストやタプルの場合と同様に、引数の数と要素数にも注意が必要です。

まとめ

今回の記事では、以下の2つの方法を紹介しました。

  • リスト・タプルの要素を展開して関数の引数に渡す方法
     →「*」をリスト・タプルの前につけて渡す
      引数と要素数に注意
  • 辞書の要素を展開して関数の引数に渡す方法
     →「**」を辞書の前につけて渡す
      キー名と引数名に注意

混同しないようにしっかりと違いを理解しましょう!