Python | Pythonのbreak・continue・returnの使い分け表

Python
スポンサーリンク

最初は紛らわしいけど、腑に落ちるとコードの見通しが一気によくなります。違いを一目で掴んで、短い例で体に馴染ませましょう。

キーワード範囲(どこまで止まる/抜ける)主な動作典型的な用途注意点
break「今いるループ」だけループを即終了して外へ出る検索の打ち切り、早期終了ネスト外のループや関数は終わらない
continue「今いるループ」だけ今回の周回をスキップして次へフィルタリング、不要ケースのスキップ後続の処理が飛ぶので副作用漏れに注意
return「今いる関数」全体関数を終了し値を返す成否の即時返却、最初に見つかった一致の返却スクリプト直書きでは使えない(関数化が必要)

基本の動作と短い例

break(ループを終わらせる)

  • 目的: 条件を満たしたら、もうこれ以上ループを回す必要がない。
  • イメージ: 「見つかった。打ち切り。」
for i in range(5):
    if i == 3:
        break
    print(i)
# 出力: 0, 1, 2
Python

breakが実行された瞬間、そのループの繰り返しは終了し、ループの直後へ進みます ビズドットオンライン

continue(今回だけスキップ)

  • 目的: いまの要素は対象外。処理せず次へ。
  • イメージ: 「この回は飛ばす。続行。」
for i in range(5):
    if i == 3:
        continue
    print(i)
# 出力: 0, 1, 2, 4
Python

continueの後にある同じ周回内のコードは実行されず、直ちに次の周回へ移ります ビズドットオンライン

return(関数を終わらせて値を返す)

  • 目的: 結論が出たので関数ごと終了し、結果を渡す。
  • イメージ: 「答えが出た。関数を閉じる。」
def first_even(nums):
    for n in nums:
        if n % 2 == 0:
            return n
    return None

print(first_even([1, 3, 4, 7]))  # 4
Python

returnはループではなく「関数の終了」を引き起こします。関数の途中で返すことで早期に処理を終えられます py-note.com


使い分けの指針(直感のひとこと)

  • break: 「目的を達成した。残りは不要」=探索の打ち切りや中断に最適。
  • continue: 「この要素は対象外。次へ」=フィルタリングや条件付きスキップに最適。
  • return: 「結論が出た。関数終了」=見つかった結果や成否の即返しに最適。

よくある落とし穴と注意点

  • break/continueは“そのループ”にしか効かない: ネストしていると「どこまで抜けるか」を勘違いしがち。breakは現在のループだけを終える。外側のループや関数は続く。
  • returnは“関数ごと”終わる: ループの中でreturnすると、ループではなく関数全部が終了する。後続の処理は一切実行されない。
  • passは“何もしない”だけ: 似ている名前で混乱しがちだが、passは文法上必要な場所で「何もせず通過する」。動作への影響はない。

for-elseの補足(breakとの関係)

Pythonのfor-else構文は、「ループの途中でbreakされなかったときだけ」elseが実行されます。つまり、探索で見つからなかった場合にelse側が走る、と覚えると分かりやすいです。

for n in range(2, 10):
    for x in range(2, n):
        if n % x == 0:
            # nは素数ではない
            break
    else:
        # 内側ループでbreakされなかった → nは素数
        print(n, "is a prime number")
Python

この挙動は「breakが使われない場合にelseが実行される」という点がポイントです。


目的別ミニ例題

例1: 最初に見つかった偶数を取得(break vs return)

  • break版(ループだけ終える、後続で使う)
nums = [1, 7, 9, 12, 15]
first = None
for n in nums:
    if n % 2 == 0:
        first = n
        break
print(first)  # 12
Python
  • return版(関数化して結論を即返す)
def first_even(nums):
    for n in nums:
        if n % 2 == 0:
            return n
    return None
print(first_even(nums))  # 12
Python

「値を返したいか」「その場で終えたいか」で使い分けます。

例2: 不要データを飛ばしながら集計(continue)

data = [10, None, 5, 0, None, 7]
total = 0
count = 0
for x in data:
    if x is None or x == 0:
        continue  # 集計に含めない
    total += x
    count += 1
print(total, count)  # 22 3
Python

スキップ条件が増えるほど、continueの使い方が効果的になります。

例3: ネストしたループでのbreakの範囲

pairs = [(1, 2), (3, 4), (5, 6)]
found = False
for a, b in pairs:
    for t in (a, b):
        if t == 4:
            found = True
            break  # 内側ループだけを終了
    if found:
        break       # 条件で外側も明示的に終了
print(found)  # True
Python

「どのループを終えるか」を明確に書くと読みやすく、意図が伝わります。


まとめの一言

  • ループを終えるならbreak、今回だけ飛ばすならcontinue、関数を終えて答えを返すならreturn。 この“範囲の違い”さえ腹落ちすれば、迷いは激減します。

Python
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました