Python:在循环中的try-finally语句中使用continue

时间:2012-05-11 03:11:16

标签: python continue try-finally

以下代码:

while True:
    try:
        print("waiting for 10 seconds...")
        continue
        print("never show this")
    finally:
        time.sleep(10)

始终打印消息“等待10秒......”,睡眠10秒钟,然后再次执行此操作?换句话说,finally子句中的语句运行,即使循环是continue - ed?

3 个答案:

答案 0 :(得分:17)

来自python docs

当在try ... finally语句的try套件中执行return,break或continue语句时,finally子句也会在出路时执行。在continue子句中,continue语句是非法的。 (原因是当前实施存在问题 - 将来可能会解除此限制。)

答案 1 :(得分:0)

文档使用稍微不清楚的语言(“出门”)来说明这种情况的发生方式。如果在exception子句中执行了continue语句,则将执行finally子句中的代码,然后循环将继续进行下一次迭代。

这是一个非常清楚的例子,说明了这种行为。

代码:

i=0
while i<5:
    try:
        assert(i!=3) #Raises an AssertionError if i==3
        print("i={0}".format(i))
    except:
        continue
    finally:
        i+= 1; #Increment i

'''
Output:

i=0
i=1
i=2
i=4
'''

答案 2 :(得分:0)

现在,从最新版本的python(3.8.4)开始,可以在“ finally”块中使用“ continue”。enter image description here