Python|戻り値を複数返す方法

1. はじめに

Pythonを学び始めると、「関数の戻り値を複数返したい」と思う場面が出てきます。
この記事では「Python|戻り値を複数返す方法」を初心者にもわかりやすく丁寧に解説します。

複数の値を返すことで、関数をより柔軟かつ効率的に活用できます。
この記事を読むことで、関数から複数の値を返す基本的な構文、実際の使用例、注意点まで理解できます。

 

2. Pythonで戻り値を複数返す方法

2-1. 複数の戻り値は「タプル」で返す

Pythonでは、関数から複数の値を返すと自動的にタプル(tuple)としてまとめられます。

def get_name_and_age():
    name = "Alice"
    age = 30
    return name, age

result = get_name_and_age()
print(result)  # タプルとして返される

実行結果:

('Alice', 30)

2-2. タプルの要素を変数に分割する(アンパック)

戻り値を個別の変数に代入したい場合は、次のようにアンパックします。

name, age = get_name_and_age()
print(name)
print(age)

実行結果:

Alice
30

 

3. よくある使い方・応用例

3-1. 複数の計算結果を一度に返す

次のように、合計・平均・最大値などを同時に返す関数は実務でも便利です。

def analyze_scores(scores):
    total = sum(scores)
    average = total / len(scores)
    maximum = max(scores)
    return total, average, maximum

scores = [80, 90, 70, 85]
total, avg, max_score = analyze_scores(scores)
print(f"合計: {total}, 平均: {avg}, 最大: {max_score}")

実行結果:

合計: 325, 平均: 81.25, 最大: 90

3-2. 辞書と組み合わせて返す

より意味のある戻り値を返したい場合は、辞書を使うのも一つの手です。

def get_user_info():
    return {
        "name": "Bob",
        "email": "bob@example.com",
        "age": 25
    }

info = get_user_info()
print(info["name"])

実行結果:

Bob

3-3. 関数内で処理結果+ステータスを返す

実務では処理結果と成功・失敗フラグを同時に返すパターンもよく使われます。

def divide(a, b):
    if b == 0:
        return None, False  # ゼロ除算
    return a / b, True

result, success = divide(10, 2)
if success:
    print(f"結果:{result}")
else:
    print("エラー:0で割ることはできません")

実行結果:

結果:5.0

 

4. 注意点・エラー対策

4-1. 変数の数と戻り値の数が一致しない

戻り値をアンパックするとき、変数の数が一致していないとエラーになります。

def get_data():
    return 1, 2, 3

a, b = get_data()  # エラーになる(戻り値3つ、変数2つ)

実行結果:

ValueError: too many values to unpack (expected 2)

対処法としては、不要な値を捨てたり、*でまとめて受け取る方法があります。

4-2. 変数名のミスに注意

戻り値のアンパックでミスがあると、意図しないデータ処理になることもあります。命名は意味のある名前を使いましょう。

 

5. まとめ

  • Pythonでは複数の戻り値をタプルとして返せる
  • アンパックを使えば、個別の変数で受け取れる
  • 応用すれば、複数の結果・ステータス・辞書なども返せる

関数の戻り値を柔軟に扱えると、より再利用性の高いコードが書けるようになります。
実務でも、ログ処理・データ解析・バリデーションなど多くの場面で活用できる知識です。

学習のコツ:まずは「2つ返す」→「3つ返す」→「アンパックして使う」と段階的に練習すると理解しやすくなります。

タイトルとURLをコピーしました