我最近读了this question它有一个关于在 Java 中标记循环的解决方案。
我想知道 Python 中是否存在这样的循环命名系统。我曾多次遇到需要从内部 for
循环中跳出外部 for
循环的情况。通常,我通过将内部循环放在一个返回(以及其他)用作中断条件的 bool 值的函数中来解决这个问题。但是为中断标记循环似乎要简单得多,如果 python 中存在这样的功能,我想尝试一下
有人知道吗?
最佳答案
这是使用上下文管理器打破多个嵌套 block 的方法:
import contextlib
@contextlib.contextmanager
def escapable():
class Escape(RuntimeError): pass
class Unblock(object):
def escape(self):
raise Escape()
try:
yield Unblock()
except Escape:
pass
您可以使用它来跳出多个循环:
with escapable() as a:
for i in xrange(30):
for j in xrange(30):
if i * j > 6:
a.escape()
你甚至可以嵌套它们:
with escapable() as a:
for i in xrange(30):
with escapable() as b:
for j in xrange(30):
if i * j == 12:
b.escape() # Break partway out
if i * j == 40:
a.escape() # Break all the way out
关于python - Python 中的命名循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8419796/