打破并继续运作

Thu*_*rEX 8 python loops continue function break

def funcA(i):
   if i%3==0:
      print "Oh! No!",
      print i
      break

for i in range(100):
   funcA(i)
   print "Pass",
   print i
Run Code Online (Sandbox Code Playgroud)

我知道上面的脚本不起作用.那么,如果我需要将一个函数放入break或继续循环,我怎么写?

Bre*_*arn 16

函数不能在调用它的代码中导致中断或继续.中断/继续必须完全出现在循环内.你的选择是:

  1. 从funcA返回一个值并用它来决定是否中断
  2. 在funcA中引发异常并在调用代码中捕获它(或者在调用链的上方某处)
  3. 编写一个封装中断逻辑的生成器,然后迭代它 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
Run Code Online (Sandbox Code Playgroud)

这允许您通过将它们分组到基于"基础"迭代器(在这种情况下是范围)的生成器中来放置条件.然后,您迭代此生成器而不是范围本身,您将获得破坏行为.