INDEX
returnの概要
| 関数の戻り値(処理結果を返す・関数を終了する) Python予約語 | ||
|
return 概要 わかりやすく説明 |
||
|
returnの考え方をイメージで理解

returnの基本的な使い方
2つの数値を足し算する関数を作り、その計算結果を return で外に送り出して変数に保存する例です。
# return を使って計算結果を返す
def add(a, b):
return a + b # 計算した答えを呼び出し元に投げる
# 関数の答え(10)が result という変数にカチッと収まります
result = add(3, 7)
print(result) # 結果: 10
add(3, 7)を実行すると、関数内のreturn 3 + 7が動き、10という結果が返ります。- もし
returnがないと、せっかく計算した10という数字が関数の外側で利用できません。
returnによる関数の早期終了(ガード節)
return が動いた瞬間に関数は終了するため、特定の条件を満たした時点で「これ以上下の処理をさせずに切り上げる」という使い方ができます。
# 条件に応じて処理を途中で切り上げる
def check_even(number):
if number % 2 == 0:
return "偶数です" # 偶数の場合はここで関数が終わり、下の行は無視されます
return "奇数です" # 奇数の場合だけここに到達します
print(check_even(4)) # 結果: 偶数です
print(check_even(7)) # 結果: 奇数です
returnを使って複数の値を同時に返す
Pythonでは、カンマ , で区切ることで、1回の return で複数の計算結果をセットにして返せます。内部的には「タプル」というデータのまとまりとして扱われます。
# 足し算、引き算、掛け算の結果を一度に返す
def calculate(a, b):
return a + b, a - b, a * b
# 3つの変数で、それぞれの結果をバラバラに受け取ることができます
sum_val, diff_val, product_val = calculate(10, 3)
print(sum_val, diff_val, product_val) # 結果: 13 7 30
returnを使ったデフォルト値(None)の処理
探しているデータが見つからなかったときに return None を明示して返し、受け取った側で安全に分岐処理を行う実践的なコードです。
# リストから最初の偶数を見つける関数
def find_first_even(numbers):
for num in numbers:
if num % 2 == 0:
return num # 見つかったら即終了してその数字を返す
return None # ループが全部回っても見つからなかった場合
result = find_first_even([1, 3, 5])
if result is None:
print("対象の数値は見つかりませんでした。")
returnを使って再帰関数を作る
return の中で自分自身の関数をもう一度呼び出すことで、階乗の計算などをスマートに行う高度なテクニックです。
# 5の階乗 (5 * 4 * 3 * 2 * 1) を計算する再帰関数
def factorial(n):
if n == 1:
return 1 # 終点に達したら 1 を返して引き返す
return n * factorial(n - 1) # 自分の1つ前の結果を待ちながら掛け算
print(factorial(5)) # 結果: 120
returnの注意点
- returnの下に書いたコードは「絶対に動かない幽霊コード」になる:同じブロック内で
returnの下に書かれたコードは、Pythonから完全に無視されます(Unreachable Code:到達不能コード)。# 【注意すべき例】returnの配置ミス def test_function(): return "完了" print("この文字は絶対に画面に表示されません!") # 実行されずに無視される - 「print()」と「return」を混同しない:初心者が最も陥りやすい落とし穴です。
print()は単に画面に文字を映し出すだけで、データの引き渡しはできません。関数の結果を別の計算や変数で使い回したいときは、画面表示ではなく必ずreturnを使いましょう。# 【失敗例】printした結果を使い回そうとする def bad_add(a, b): print(a + b) # 画面に出るだけで外には返らない total = bad_add(5, 5) # 画面に10は出るが、変数totalの中身は空っぽ(None)になる print(total + 5) # None + 5 になってしまいエラー(TypeError)が発生! - ループの途中で意図せず関数を終了させてしまう罠:
forループなどの内側でうっかりreturnを書くと、ループが1周目であってもその時点で関数全体がパッと終了してしまいます。リストの全要素を処理し終えてから結果を返したい場合は、returnのインデント(字下げ)の位置をループの外側に合わせる必要があります。# 【失敗例】1周目で帰ってしまう def bug_loop(numbers): for n in numbers: return n * 2 # 1つ目の要素を処理した瞬間に関数ごと終了してしまう # 【正しい例】ループの外でまとめて返す def correct_loop(numbers): results = [] for n in numbers: results.append(n * 2) return results # 全部の処理が終わったこの位置でリターンする
returnのよくある質問
- Q: `return` を全く書かない関数を作った場合、その関数は何を返しているのですか?
- A: Pythonは、
returnの記述がない、あるいは値が指定されていない関数を呼び出された場合、裏側で自動的に `return None`(値なし) を付け足して処理しています。# 何も返さない関数 def simple_greet(): print("ハロー") value = simple_greet() print(value) # 結果: None (値が何も返ってきていない証拠) - Q: 1つの関数の中に `return` は1個しか書いてはいけないというルールはありますか?
- A: いいえ、何個書いても文法上は全く問題ありません。
if文の分岐に合わせて「この場合はこの値を返す、そうじゃない場合は別の値を返す」というように、複数のreturnを散りばめるのは実務でも一般的な書き方です。ただし、あまりに数が多すぎると「どこが関数の出口なのか」が分かりづらくなるため、多くても3〜4個程度に抑えるのが綺麗です。
まとめ
return は、関数が役割を果たした証として「答え」を外の世界へ送り届け、同時に処理の幕を閉じるための重要な制御キーワードです。
- 関数の処理結果(戻り値)を呼び出し元へ戻し、変数に代入できるようにする。
returnが実行された時点で、その関数の内部処理は(下にコードが残っていても)即座に終了する。- 何も指定しない、あるいは省略した場合は
Noneが返り、複数並べた場合は「タプル」として返る。
関数の仕組みを理解する上で return のマスターは避けて通れません。単なる画面表示の print() との違いを完璧に意識しながら、データを受け渡す感覚を身につけましょう。