以下代码:
while True:
try:
print("waiting for 10 seconds...")
continue
print("never show this")
finally:
time.sleep(10)
始终打印消息“等待10秒......”,睡眠10秒钟,然后再次执行此操作?换句话说,finally
子句中的语句运行,即使循环是continue
- ed?
答案 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