在迴圈中打破並繼續
break 宣告
當 break 語句在迴圈內執行時,控制流會立即中斷迴圈:
i = 0
while i < 7:
print(i)
if i == 4:
print("Breaking from loop")
break
i += 1
執行 break 語句後,不會評估迴圈條件。請注意,break 語句只允許在語法內部迴圈。函式內的 break 語句不能用於終止呼叫該函式的迴圈。
執行以下操作列印每個數字,直到數字 4 滿足 break 語句並且迴圈停止:
0
1
2
3
4
Breaking from loop
break 語句也可以在 for 迴圈中使用,這是 Python 提供的另一個迴圈結構:
for i in (0, 1, 2, 3, 4):
print(i)
if i == 2:
break
執行此迴圈現在列印:
0
1
2
請注意,由於迴圈結束,因此不會列印 3 和 4。
如果一個迴圈有一個 else 子句 ,當迴圈通過 break 語句終止時它不會執行。
continue 宣告
continue 語句將跳過迴圈的下一次迭代,繞過當前塊的其餘部分,但繼續迴圈。與 break 一樣,continue 只能出現在迴圈中:
for i in (0, 1, 2, 3, 4, 5):
if i == 2 or i == 4:
continue
print(i)
0
1
3
5
請注意,2 和 4 沒有列印,這是因為 continue 進入下一次迭代而不是繼續到 print(i) 時 i == 2 或 i == 4。
巢狀迴圈
break 和 continue 僅在單個迴圈級別上執行。以下示例將僅突破內部 for 迴圈,而不是外部 while 迴圈:
while True:
for i in range(1,5):
if i == 2:
break # Will only break out of the inner loop!
Python 沒有能力同時突破多個迴圈級別 - 如果需要這種行為,將一個或多個迴圈重構為一個函式並用 return 替換 break 可能就是這樣。
在函式中使用 return 作為 break
該 return 語句從函式退出,而不執行後,自帶的程式碼。
如果你在一個函式內部有一個迴圈,那麼從該迴圈內部使用 return 相當於擁有一個 break,因為迴圈的其餘程式碼沒有被執行( 請注意迴圈之後的任何程式碼也不執行 ):
def break_loop():
for i in range(1, 5):
if (i == 2):
return(i)
print(i)
return(5)
如果你有巢狀迴圈,return 語句將破壞所有迴圈:
def break_all():
for j in range(1, 5):
for i in range(1,4):
if i*j == 6:
return(i)
print(i*j)
將輸出:
1 # 1*1
2 # 1*2
3 # 1*3
4 # 1*4
2 # 2*1
4 # 2*2
# return because 2*3 = 6, the remaining iterations of both loops are not executed