【Python】引数の個数を固定しない関数の作成方法!

  • 2020年4月20日
  • 2020年4月20日
  • Python

こんにちは!

func(x, y)のように2つの引数を持つ関数を呼び出す際に、引数を2つ渡さなければエラーが出てしまいます。

状況に応じて引数の個数を変更したい場合には困りますね。

今回の記事では、以下の引数の個数を固定しない関数の作成方法を紹介します。

  • 引数をタプルで受け取る方法

引数をタプルで受け取る

引数をタプルの形式で受け取ることで、複数の引数を受け取ることができます。

引数をタプルの形式で受け取るには、引数名の前に「*」をつけます。

通常は、慣例としてargsを引数名に使用し、「*args」とします

def 関数名(*args):
    〜〜〜〜

以下のプログラムは、引数をタプルで受け取るプログラムです。

def func(*args):
    print(args)

func(1, 2, 3, 'a', 'b', 'c', 'Python', '初心者の', '備忘録')

実行結果

(1, 2, 3, 'a', 'b', 'c', 'Python', '初心者の', '備忘録')

括弧が()となっているため、タプルの形式で受け取ることができていますね。

ちなみに、引数に何も指定しないと、空のタプルが表示されます。

def func(*args):
    print(args)

func()

実行結果

()

必須の引数を組み合わせる

必須の引数と組み合わせることで、必須の引数以降の引数をまとめてタプルの形式で受け取ることができます。

以下のプログラムは、第一引数で指定した回数、以降の引数で受け取ったタプルを表示するプログラムです。

def func(re, *args):
    for i in range(re):
        print(args)

func(5, 'Python', '初心者の', '備忘録')

実行結果

('Python', '初心者の', '備忘録')
('Python', '初心者の', '備忘録')
('Python', '初心者の', '備忘録')
('Python', '初心者の', '備忘録')
('Python', '初心者の', '備忘録')
もちろん、必須の引数を渡し忘れるとエラーが発生します。

例)

def func(re, *args):
    for i in range(re):
        print(args)

func()

実行結果

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

まとめ

今回の記事では、引数の個数を固定しない関数の作成方法として、以下の方法を紹介しました。

  • 引数をタプルで受け取る方法
     →「*args」を使用

状況に応じて引数の個数を変化させられる関数を作成できるようになりましょう!