[英]Python: Using continue in a try-finally statement in a loop
将以下代码:
while True:
try:
print("waiting for 10 seconds...")
continue
print("never show this")
finally:
time.sleep(10)
总是打印消息“等待10秒...”,休眠10秒,然后再做一次? 换句话说,即使循环是continue
-ed, finally
子句中的语句也会运行吗?
当在 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'。 在此处输入图片说明
最后,您可以执行此操作,CPython 3.8使此语句有效:
由于实现存在问题,finally子句中的continue语句是非法的。 在Python 3.8中,取消了此限制。 ( 新功能 )
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.