将以下代码:
while True:
try:
print("waiting for 10 seconds...")
continue
print("never show this")
finally:
time.sleep(10)
总是打印消息“等待 10 秒……”,休眠 10 秒,然后再做一次?换句话说,finally
即使循环被continue
-ed,子句中的语句也会运行吗?
将以下代码:
while True:
try:
print("waiting for 10 seconds...")
continue
print("never show this")
finally:
time.sleep(10)
总是打印消息“等待 10 秒……”,休眠 10 秒,然后再做一次?换句话说,finally
即使循环被continue
-ed,子句中的语句也会运行吗?
来自python 文档:
当在 try...finally 语句的 try 套件中执行 return、break 或 continue 语句时,finally 子句也在“退出时”执行。finally 子句中的 continue 语句是非法的。(原因是当前实现存在问题——未来可能会取消此限制)。
该文档使用稍微不清楚的语言(“在路上”)来解释这种情况是如何发生的。如果在异常子句中执行 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
'''
现在从最新版本的 python (3.8.4) 开始,可以在“finally”块中使用“continue”。在此处输入图像描述