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

Python
スポンサーリンク

初心者が迷いやすい3兄弟「continue・return・break」。まずは違いをひと目で比較し、そのあとで短い例題で体感しましょう。


早見表

キーワード範囲(どこまで止まる)何が起きる主な用途読みやすさの印象注意点
break今いる「ループ」だけループを直ちに終了探索の早期終了・打ち切り分かりやすいネスト外には効かない
continue今いる「ループ」だけ今回の周回をスキップして次へ不要ケースのスキップ条件が多いと読みにくくなる必要な更新がスキップされてないか注意
return今いる「関数」全体関数を終了し値を返す成功/失敗の即時返却・早期退出意図が明確で読みやすいスクリプト直書きだと使えない(関数化が必要)

指針のひとこと:「ループを終わるなら break」「今回だけ飛ばすなら continue」「処理全体を終わるなら return」。


使い分けの感覚

  • break:
    • 意図:「もう目的は見つかった。残りを回しても意味がない」
    • 典型: 検索・探索・バリデーションの打ち切り
  • continue:
    • 意図:「この要素は対象外。次の要素へ」
    • 典型: フィルタリング・スキップ処理
  • return:
    • 意図:「結論が出た。関数ごとおしまい」
    • 典型: 成否判定・最初の一致の返却・エラー時の即終了

例題で比較

例1: リストから最初の偶数を見つけたい(break と return)

# break:ループだけ終わる(スクリプト直書き向き)
numbers = [3, 7, 11, 18, 21]

for n in numbers:
    if n % 2 == 0:
        print("最初の偶数:", n)
        break
else:
    print("偶数は見つかりませんでした")
Python
# return:関数ごと終わる(再利用・テストしやすい)
def find_first_even(numbers):
    for n in numbers:
        if n % 2 == 0:
            return n
    return None

result = find_first_even([3, 7, 11, 18, 21])
print("最初の偶数:", result if result is not None else "なし")
Python
  • 違いの要点:
    • break: ループ終了後に続きの処理が可能。
    • return: 関数を抜けるので、後続は関数の外で行う。

例2: 無効データを飛ばしながら集計したい(continue)

items = [10, None, 25, "x", 15]
total = 0

for x in items:
    if not isinstance(x, int):
        continue  # 数値以外はスキップ
    total += x

print("合計:", total)  # 10 + 25 + 15 = 50
Python
  • ポイント: 不要ケースを早めに除外して、主処理(加算)をスッキリ保つ。

例3: ネストしたループでの使い分け(break の範囲に注意)

grid = [[1, 2, 3], [4, 5, 6]]

for row in grid:
    for x in row:
        if x % 2 == 0:
            print("最初の偶数:", x)
            break  # 内側ループだけ終了
    # 外側は続く
Python
  • 気づき: 外側ループまで止めたいなら関数化して return を使う方が明確。
def find_first_even_in_grid(grid):
    for row in grid:
        for x in row:
            if x % 2 == 0:
                return x
    return None
Python

選び方の指針

  • 目的が「打ち切り」なら break、目的が「結論の返却」なら return。
  • 単純なスキップは continue、複雑な条件分岐は if-elif-else で整理して continue を減らす。
  • ネストが深い場合は関数に切り出して return を使うと、意図が伝わりやすくなる。

よくある落とし穴と対策

  • continue のせいで更新漏れ
    • 例: ループ末尾のカウンタ加算やログ出力が continue で飛ぶ。
    • 対策: 重要な更新は continue の前に置く、またはロジックを関数に分ける。
  • break の範囲誤解
    • 例: 内側だけしか止まらないのに、外側まで止まると思い込む。
    • 対策: 外側も止めたいなら関数化して return、またはフラグで外側条件に組み込む。
  • return の使いすぎで出口が多すぎる
    • 例: 関数の途中に return が散らばって読みにくい。
    • 対策: 早期 return は2〜3箇所までに抑え、共通の後処理が必要ならまとめる。

ミニ練習問題(答えは自分で動かして確認)

  • 練習1: リストから最初の3の倍数を見つけるコードを、break と return の両方で書く。
  • 練習2: 文字列のリストから、空文字をスキップしながら長さの合計を求める(continue)。
  • 練習3: 二重ループで行列から最初の負の数を探し、見つかったら処理全体を終了(関数+return)。

迷ったら「何をスキップ/終了したいのか」を言葉にしてみてください。言葉にできれば、continue・break・returnのどれを使うべきか自ずと決まります。

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