繁体   English   中英

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

[英]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子句中的语句也会运行吗?

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'。 在此处输入图片说明

最后,您可以执行此操作,CPython 3.8使此语句有效:

由于实现存在问题,finally子句中的continue语句是非法的。 在Python 3.8中,取消了此限制。 新功能

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM