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つ返す」→「アンパックして使う」と段階的に練習すると理解しやすくなります。