功能:
def function_1(value):
if value < 5:
continue
else:
print "value: ", value
循环:
for value in xrange(10):
function_1(value)
在上面的for
循环中,如果value小于5,function_1
将使for循环跳转到下一次迭代,否则它将打印该值。
如何在循环内部的函数的帮助下跳过迭代步骤?
答案 0 :(得分:7)
函数不知道它是否在循环内被调用,当然不能使用continue
或break
来影响该循环。
你必须在这里使用不同的沟通方式。使用异常或返回一个布尔值来指示它需要跳到下一次迭代的循环代码。
使用例外:
for value in xrange(10):
try:
function_1(value)
except ExceptionRaisedByFunction1:
# the frobnar failed to foozle the baz
continue
会发出函数中的异常情况,表示当前值不合适,并且可以跳过其余的迭代,例如。
你也可以考虑使用生成器函数来代替过滤你的迭代:
def filter_function(iterable):
for value in iterable:
if value >= 5:
print "value: ", value
yield value
for value in filter_function(xrange(10)):
# do something with value
此处生成器仅生成5或更高的值,因此for
循环永远不需要使用continue
,因为从未看到低于5的值。