继续执行是否会阻止else块在for / else语句中运行?

时间:2019-09-20 15:02:04

标签: python

在带有for语句的break循环中,我可以在末尾添加else语句,如果我的for循环从未命中{{1 }}语句。

我的问题是,break对此有何影响?

2 个答案:

答案 0 :(得分:3)

continue不会影响else:子句。如果循环正常终止,即if a StopIteration is (implicitly) raised by the iterator,则运行else子句。

continue语句对特定的迭代不执行任何操作,但是不会阻止迭代器被耗尽。

答案 1 :(得分:2)

否,continue子句的执行不受else的影响。

唯一阻止continue语句(在for循环之后)被触发的是else语句(或您的代码break在其之前退出或引发异常)完成return循环)。

for

将打印for i in range(5): continue else: print("else triggered")

请参见the docs

  

循环语句可以包含else triggered子句;当循环通过用尽列表而终止(使用else)或条件变为假(使用for)时,则执行此命令,但是当循环通过while语句终止时,则不执行

     

[...]

     

与循环一起使用时,与break语句相比,else子句与else语句的try子句有更多共同点: {1}}语句的if子句在没有异常发生时运行,而循环的try子句在没有else发生时运行。

仅提及else是因为break子句无法运行,而break却没有。