功能:
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循环跳到下一次迭代,否则打印值。 如何借助上述循环内的函数跳过迭代步骤?
请您参考如下方法:
函数不知道它是否在循环内被调用,当然不能使用 continue 或 break 来影响该循环。
您必须在这里使用不同的通信方式。使用异常或返回一个 bool 值来指示需要跳到下一次迭代的循环代码。
使用异常:
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 的值。
