以下代码是否会:
while True:
try:
print("waiting for 10 seconds...")
continue
print("never show this")
finally:
time.sleep(10)
始终打印消息“等待10秒钟…”,休眠10秒钟,然后再次执行?换句话说,在循环被 continue
中断时,finally
子句中的语句是否会运行?
以下代码是否会:
while True:
try:
print("waiting for 10 seconds...")
continue
print("never show this")
finally:
time.sleep(10)
始终打印消息“等待10秒钟…”,休眠10秒钟,然后再次执行?换句话说,在循环被 continue
中断时,finally
子句中的语句是否会运行?
来自Python文档:
当在try语句块中执行return、break或continue语句时,在退出该语句块的同时,finally语句也会被执行。在finally语句块中使用continue语句是不合法的。(原因是当前实现存在问题——这个限制在未来可能会被取消)。
文档使用了不太清晰的语言(“on the way out”)来解释这种情况是如何发生的。如果在异常子句中执行了一个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
'''