def funcA(i):
if i%3==0:
print "Oh! No!",
print i
break
for i in range(100):
funcA(i)
print "Pass",
print i
我知道上面的脚本行不通。那么,如果我需要将带有break或continue的函数放入循环中,我该如何编写呢?
函数不能导致调用它的代码中断或继续。中断/继续必须按字面意思出现在循环内部。您的选择是:
- 从 funcA 返回一个值并用它来决定是否中断
- 在 funcA 中引发异常并在调用代码(或调用链更高的某个位置)中捕获它
- 编写一个封装中断逻辑的生成器并对其进行迭代,而不是迭代
range
我所说的#3 的意思是这样的:
def gen(base):
for item in base:
if item%3 == 0:
break
yield i
for i in gen(range(1, 100)):
print "Pass," i
这允许您通过将条件分组到基于“基”迭代器(在本例中为范围)的生成器中来放置中断。然后,您迭代该生成器而不是迭代范围本身,您就会得到破坏行为。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)