在循环中打破并继续
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