関数で複数の値をreturnする

スポンサーリンク
スポンサーリンク
ライフスタイル関連のコンテンツ
お金 | 仕事 | 勉強 | プライベート | 健康 |
プログラミング関連のコンテンツ
C言語/C++入門 | Ruby入門 | Python入門 | プログラミング全般

Pythonでは、関数定義において、複数の値を返すように書くことができます。
通常、他のプログラミング言語では、関数は一つの値のみを返しますので、これはPython特有のものですね。

スポンサーリンク

とは言っても、書き方はすごく簡単で、returnに続いて、返したい値を「,」(カンマ)で区切るだけです。

def plus_minus_mult(a, b):
    return a + b, a - b, a * b
print plus_minus_mult(15, 5)
c, d, e = plus_minus_mult(20, 10)
print c, d, e

上記コードでは、それぞれ、a、bという二つの引数の足し算、引き算、掛け算の3つの値を返すように関数定義しています。
値を引数に与えて関数を呼び出し、表示した実行結果は・・・

(20, 10, 75)
30 10 200

実行結果の1行目では、値が3つreturnされ表示されています。
ここで、注意なのは、3つの値が( )(括弧)によってくくられていることです。
これは、以前勉強した、タプルのデータ型として値が返っていることを表します。
返ってきた値を、そのままprintで表示させると、タプル型となります。

実行結果の2行目では、タプルではなく、普通の数字の並びとなっています。
これは、「c, d, e = plus_minus_mult(20, 10)」とreturnされるタプル要素の値の数だけ(3つ)、「c、d、e」と代入用の変数に、一旦返される値を代入し、その後「print c, d, e」と3つの値を表示しているからです。

実際には、「c, d, e = (30, 10, 200)」とタプルの要素の値が、一つずつ変数に代入されていることになります。
これを多重代入と呼び、リスト形式でも、「c, d, e = [1, 2, 3]」のようにリスト要素の値を、多重代入できます。

スポンサーリンク
 
スポンサーリンク