INDEX
breakの概要
| ループを途中で終了する Python予約語 | ||
|
break 概要 わかりやすく説明 |
||
|
breakの考え方をイメージで理解

breakの基本的な使い方
0から9まで順に数値をカウントアップするループの中で、数値が「5」になった瞬間に break を発動させて処理を中断する例です。
# breakを使ったループの中断
for i in range(10):
if i == 5:
print("5が見つかったのでループを終了します")
break # ここでループを即座に抜けます
print(i)
# 出力結果:
# 0
# 1
# 2
# 3
# 4
# 5が見つかったのでループを終了します
i == 5の条件が成立するとbreakが実行され、range(10)の残りの処理(6〜9)は一切実行されずにループが終了します。breakの直下にあるprint(i)も実行されないため、画面に「5」の数値自体は出力されません。
whileループでのbreakの使用(対話型処理の基本)
条件が常に成立する while True(無限ループ)内で、ユーザーの入力や変数の変化に応じて適切なタイミングで安全にループを終わらせる例です。
# whileループでbreakを使う
count = 0
while True: # 止めないと永遠に続く無限ループ
print(count)
if count >= 3:
print("条件を満たしたのでループを終了します")
break # 安全に無限ループをストップ
count += 1
count >= 3の条件を検知した段階でbreakが走り、安全に全体の繰り返し処理をストップさせて次のステップへ移行します。
ネストされたループでのbreakの挙動
入れ子構造(ネスト)になっているループの場合、break は「そのキーワードが書かれている階層のループ」しか壊せないという重要な性質があります。
# ネストされたループでbreakを使う
for i in range(3): # 外側のループ
for j in range(5): # 内側のループ
print(f"i={i}, j={j}")
if j == 2:
print("内側のループのみを終了します")
break # ここで終わるのは「for j」のループだけです
# 出力結果:
# i=0, j=0
# i=0, j=1
# i=0, j=2
# 内側のループのみを終了します
# i=1, j=0 ← 外側の「for i」は生きているため、次のサイクルが始まります
# ...
j == 2のときにbreakが実行されると、内側のfor jループは強制終了しますが、外側のfor iループは終了せず、次のi=1の処理へと進みます。
breakの実践的な使用例(リストからの早期探索)
大量のデータリストから特定の値を探し出す、実務で非常によく使われる「早期終了」のパターンです。
# 特定の値を見つけたら検索を打ち切る
numbers = [10, 20, 30, 40, 50]
for num in numbers:
print(f"チェック中: {num}")
if num == 30:
print("目的の値(30)が見つかったので、これ以降のチェックをスキップします。")
break
breakの注意点
- ループの外部(通常の地べたやif文単体の中)では絶対に使えない:
breakはforまたはwhileの内部に配置されている必要があります。単独のif文の中などに直接記述すると、構文エラー(SyntaxError: 'break' outside loop)となり起動すらできません。 - 「for ... else」構文と組み合わせる場合の罠:Pythonには「ループが一度も break されずに最後まで回りきったら実行する」という
elseブロックをループの末尾に結合できる特殊な構文があります。逆に言えば、`break` が一回でも発動してループを抜けた場合、`else` 内の処理は完全に無視されるという挙動になります。# 【注意すべき挙動の例】 for x in [1, 2, 3]: if x == 2: break else: print("ループが最後まで回りきりました") # breakを通過したため、このelseは実行されません - 無限ループでの設置忘れによる「フリーズ(フリーズバグ)」:
while Trueを使ったプログラムでbreakの条件設計を間違えたり、記述し忘れたりすると、CPUの処理を100%使い果たしてプログラムが応答なし(フリーズ状態)になります。
breakのよくある質問
- Q: `break` と `continue` の違いがいつもこんがらがってしまいます。
- A: 「諦める範囲の広さ」が違います。
breakは超強力なボタンで、「この繰り返しマラソン大会自体を、今すぐここでリタイア(中止)する」という意味になります。continueは少しマイルドで、「今走っているこの1周(現在の周回)の残りの処理だけをサボって、次の周回のスタート地点へワープする(マラソンは続ける)」という意味になります。for i in range(3): if i == 1: continue # i=1の残りの処理を飛ばして、次の i=2 へ進む print(i) # 結果的に 0 と 2 が表示される(1だけスキップ) for i in range(3): if i == 1: break # i=1になった瞬間、大会自体を終了する print(i) # 結果的に 0 しか表示されない - Q: ネストされた複数のループ(外側も内側も全部)を、内側からの `break` 一発で同時にすべて終了させることはできますか?
- A:
break単体では不可能です。一発で全階層から脱出したい場合は、ループ自体を「関数」の中に閉じ込めてしまい、breakの代わりにreturnキーワードを使って関数ごと終了させる方法が最もシンプルで実務でも推奨されます。# 【対策】関数化して return で全脱出する綺麗なアプローチ def search_matrix(): for i in range(3): for j in range(5): if i == 1 and j == 2: print("すべて終了します") return # これで外側のループもまとめて一瞬で終わらせることができます search_matrix()
まとめ
break は、条件に応じて繰り返しの渦から瞬時に抜け出すための強力な制御キーワードです。
- 条件式とセットで使用し、合致した段階で
forやwhileループをその場で強制打ち切りにする。 - 大規模なデータ検索において、目的を達成した瞬間に処理を切り上げることで、マシンのCPUパワーやメモリを節約する「遅延評価・早期リターン」の思想に直結する。
- ネスト構造では直近のループ1階層しか破壊できないため、多重ループの制御時は全体の構造設計に配慮が必要。
適切な break の配置は、無駄な計算を一切行わない「エコで高速なプログラム」を構築するために欠かせません。ループの終了条件を明確にし、意図したタイミングで確実に脱出できるスマートなループ処理を書けるようになりましょう。