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