0から始めるPython独学ラボ

化学専門の大学生が趣味で始めたPythonをできるだけ分かりやすく説明します

もっと関数について②

今回も関数について取り扱っていきます。

関数には引数が存在しますが、引数をいくつでも取ることができる方法が存在します。

それが可変長引数です。可変長なので、長さを自由に変化させることができるんですね。実際の引数との違いを見ていきましょう。以下のようなコードを書いたとします。

 

def a(x, y, z):

    return x + y + z

 

このようにコードを書けば、引数に指定した三つの数字を足し合わせることができます。しかし、この場合には引数は三つしか指定できません。任意の数を足し合わせる関数を書くことはできないのです。足し合わせる数が増えるたびに、関数を定義していくのは面倒ですよね。そこで、可変長引数を用います。可変長引数は、引数の前に * を付けるだけで完成するんですが、慣習として *args という風に書かれます。これはなぜかというと、こうすることでプログラムを読む人が、可変長引数であると見た瞬間に分かるからです。

 

可変長引数は、いつも引数の末尾に書きます。例えば

def a(x, y, *args):

    処理

と書き、これを呼び出すときに

a(1, 2, 3, 4, 5, 6)

と書いたならば、xに1が代入され、yに2が代入され、3、4、5、6はタプルとしてargsに代入されます。つまり、引数を呼び出すときに、宣言している引数以上の引数が指定された場合に、余剰の引数がすべてargsにタプルとして代入されるわけです。

 

具体例として、以下に全ての引数を足し合わせるプログラムを書いてみます。

 

テキストエディタ

def a(*args):

    y = 0

    for x in args:

        y +=x

    return y

print(a(1,2,3,4,5,6,7,8,9))

 

実行結果

45

 

この例では、関数の呼び出し時の引数全てがリストargsに代入され、そしてリストはイテラブル(繰り返し可能)なオブジェクトであるため、forにより中身を取り出して、それらを足し合わせています。

可変長引数について理解できたでしょうか?

今回はリスト型の可変長引数について取り扱いました。次は、辞書型の可変長引数について取り扱っていきましょう。

これで今回の記事は終わりです。お疲れさまでした。