Python 如何使用方法结束循环?
如何使用方法强制结束while循环Python 如何使用方法结束循环?,python,Python,如何使用方法强制结束while循环 class Test(object): def start(self): while True: self.stop() def stop(self): return break obj=Test() obj.start() 实现这一点的最简单方法是提出并执行一个StopIteration。这将立即停止循环,而RvdK将在下一次迭代时停止 class Test(object): def start(self):
class Test(object):
def start(self):
while True:
self.stop()
def stop(self):
return break
obj=Test()
obj.start()
实现这一点的最简单方法是提出并执行一个
StopIteration
。这将立即停止循环,而RvdK将在下一次迭代时停止
class Test(object):
def start(self):
try:
while True:
self.stop()
except StopIteration:
pass
def stop(self):
raise StopIteration()
obj = Test()
obj.start()
您应该保留一个标志,并在while循环中检查它
class Test(object):
def __init__(self):
self.running = False
def start(self):
self.running = True
while self.running:
self.running = not self.stop()
def stop(self):
return True
obj=Test()
obj.start()
如果您想立即停止,则需要呼叫中断:
def start(self):
self.running = True
while self.running:
if self.stop():
break;
# do other stuff
或
好主意,但是你不能在pythonth中返回
break
,这不是StopIteration
的作用。。。OP最好只写一行if self.stop():break
行。@Kevin您可以使用任何异常,甚至自定义异常,但我认为StopIteration
最能说明目的。在我看来,异常似乎有点过火…@RvdK是这样,但如果您有多个嵌套循环,这似乎是python的方式(这是一个稍微不同的场景)@RvdK虽然它们被称为异常,但也可能被视为事件或消息。您的第二个示例将在第一次迭代时中断。self.stop
始终返回True
您的循环将永远不会到达#do other stuff
行。@That1Guy:在OP示例中,它也将在第一次迭代时中断。我认为这只是一个简单的例子,实际上stop()
只有在满足某些条件时才会返回True。@Luatorth这是一个公平的观点。@TimCastelijns:在OP的例子中,它也会在第一次迭代时中断。我认为这只是一个简单的例子,实际上stop()
只有在满足某些条件时才会返回True。但是,这并不能真正回答问题,因为我想这是故意的,stop()
不用于循环的条件。@TimCastelijns循环没有任何作用,问题是如何结束循环。@TimCastelijns但好的,我添加了一个替代方案。公平地说,我明白你的观点
class Test(object):
def start(self):
while not self.stop():
pass
def stop(self):
return True
obj=Test()
obj.start()
class Test(object):
def start(self):
while True:
if self.stop():
break
def stop(self):
return True
obj=Test()
obj.start()