今回は、Pythonでreturnを使って戻り値を返す方法についてご紹介します。
Pythonでは、returnを使うことで関数から値を呼び出し元へ返すことができます。
この記事では、return文の基本構文や使い方、よくあるエラーへの対処方法を初心者の方にも分かりやすく解説します。
それでは早速、本題に入りましょう。
returnとは?
returnとは、関数の処理結果(戻り値)を呼び出し元に返すための命令です。
関数内でreturnが実行されると、その時点で関数が終了し、指定した値が返されます。
基本的には、以下のような流れで使用されます。
- 引数(関数に渡す値)を受け取る
- 関数内で処理を行う
- returnで処理結果を返す
基本的なreturnの使い方
まずは、単一の値を返す簡単な例を見てみましょう。
単一の値を返す例
1 2 3 4 5 |
def add(a, b): return a + b # aとbの合計を返す result = add(3, 5) print(result) # 8 が出力される |
8
上記では、add関数が引数で受け取った2つの数値を足し、その合計値を返しています。
return a + bの時点で関数の処理が終了し、呼び出し元へ戻り値(8)が返されます。
複数の値を返す例
Pythonでは、カンマで区切って複数の値を指定すると、その実体はタプルとして返されます。
1 2 3 4 5 6 7 8 |
def calculate_stats(x, y): total = x + y diff = x - y return total, diff # タプル (total, diff) を返す sum_value, difference = calculate_stats(10, 3) print("合計:", sum_value) # 合計: 13 print("差:", difference) # 差: 7 |
合計: 13
差: 7
このように、return total, diffのように複数の値を返すと、呼び出し元ではタプルの形で受け取るか、アンパックして変数に格納できます。
条件に応じた戻り値を返す例
条件分岐を用いて、入力に応じた異なる値を返すことも可能です。
1 2 3 4 5 6 7 8 9 10 11 |
def check_number(num): if num < 0: return "負の数です" elif num == 0: return "ゼロです" else: return "正の数です" print(check_number(-5)) # 負の数です print(check_number(0)) # ゼロです print(check_number(10)) # 正の数です |
負の数です
ゼロです
正の数です
このように、return文の前に条件をチェックして、入力値に合わせて異なる結果を返すことができます。
戻り値がない場合
returnを記述しない、またはreturnだけを書いた場合は、デフォルトでNoneが返されます。
1 2 3 4 5 6 |
def greet(name): print(f"こんにちは、{name}さん!") return # 何も返さないので、Noneが返る message = greet("太郎") print(message) # None が出力される |
こんにちは、太郎さん!
None
上記の例では、greet関数が明示的に値を返さないため、Noneが返されます。
returnの注意点
- return実行後は関数が終了し、それ以降のコードは実行されない
- 複数の値を返す場合はタプルとして返されるため、呼び出し元ではアンパックするかタプル扱いにする
- 戻り値がない場合のデフォルトはNone
- 関数には「ひとつの機能」を持たせる設計が望ましい
よくあるreturn文のエラーと対処法
Pythonでreturn文を扱う際に、初心者の方がつまずきやすいエラーや注意点をいくつか紹介します。
returnが関数外にある(SyntaxError)
関数定義の外でreturnを使うと、SyntaxError: ‘return’ outside functionのようなエラーが発生します。
- 必ずdefで定義した関数のブロック(インデント)内にreturnを書きましょう
インデントのミス
Pythonはインデントが重要です。
return文が意図しない位置にあると、処理が早期終了してしまったり、条件分岐の外に書いてしまいエラーになる場合があります。
- ブロック構造をよく確認し、if文やfor文のインデントに注意する
何も返ってこない(実はNoneが返っている)
初心者の方が見落としがちなのが「関数内でreturnをまったく指定していない」「returnだけを使用している」ケースです。
- 実際にはNoneが返っているため、期待した値が返ってこない
- デバッグ時はprint文などで戻り値を確認してみる
まとめ
Pythonでのreturn文は、関数から処理結果を返す重要な役割を担います。
単一の値だけでなく複数の値を返せるため、タプルとしての取り扱いも覚えておくと便利です。
インデントや記述場所に注意すれば、より安全にコードを書けるでしょう。