可能是重复问题:
如何在Python中跳出多个循环?
在Python中,是否可以跳出两个for循环?
例如:
for i in range(1,100):
for j in range(1,100):
break ALL the loops!
可能是重复问题:
如何在Python中跳出多个循环?
在Python中,是否可以跳出两个for循环?
例如:
for i in range(1,100):
for j in range(1,100):
break ALL the loops!
不,Python中没有嵌套的break
语句。
相反,您可以像这样简化您的函数:
import itertools
for i,j in itertools.product(range(1, 100), repeat=2):
break
...或将代码放入自己的函数中,然后使用 return
:
def _helper():
for i in range(1,100):
for j in range(1,100):
return
_helper()
使用try-except语句处理异常:
class BreakAllTheLoops(BaseException): pass
try:
for i in range(1,100):
for j in range(1,100):
raise BreakAllTheLoops()
except BreakAllTheLoops:
pass
.. 或者使用 for-else-continue:
for i in range(1,100):
for j in range(1,100):
break
else:
continue
break
或者使用一个标志变量:
exitFlag = False
for i in range(1,100):
for j in range(1,100):
exitFlag = True
break
if exitFlag:
break
在PEP 3136中提出了几种解决方案,但是BDFL拒绝了该方案:
我拒绝这个方案的原因是需要这种特性的代码非常罕见并且复杂。在大多数情况下,已经存在可以产生清晰代码的解决方案,例如使用'return'。虽然我相信有一些(罕见的)真实情况,其中代码的清晰度将受到重构的影响,从而使其可以使用return,但这被两个问题抵消:
语言的复杂性会永久增加。这不仅影响所有Python实现,还影响每个源代码分析工具,以及当然所有与该语言相关的文档。
我预计该功能将被滥用,而不是正确使用,导致代码清晰度净减少(跨所有Python代码编写测量)。懒惰的程序员无处不在,你很快就会发现手头上有许多难以理解的代码。
不,你不能指定要中断多少个循环。将你的代码放在一个函数中,并使用 return
。
for i in range(1,100):
breaking = false
for j in range(1,100):
if foundAReasonToBreak:
breaking = true
break
if breaking:
break
try:
for i in range(1,10):
print i
for j in range(1,10):
if j == 5: raise AssertionError
print j
except AssertionError:
pass
print "I'm free"
这可能有点不太雅观,但它似乎能够实现你所要求的功能。
编辑:我看到@phihag在我尝试时发布了类似的内容。