繁体   English   中英

在Python中,else的目的是什么:继续try..except块?

[英]In Python, what would be the purpose of else:continue in a try..except block?

我正在阅读一些源代码,其中包含try .. except带有else: continue语句的块。 它有点类似于以下内容:

numerator = float(1)
denominator = float(2)

def do_divisions(numerator=numerator, denominator=denominator):
    for _ in range(10):
        try:
            fraction = numerator / denominator
            print "{numerator}/{denominator} = {fraction}".format(numerator=numerator, denominator=denominator, fraction=fraction)
            denominator -= 1
        except ZeroDivisionError:
            print "You cannot divide by zero!"
            return False
        else:
            continue

result = do_divisions()

我正在努力了解else: continue语句还可以。 https://docs.python.org/2.7/tutorial/controlflow.html可以理解, else子句将在没有异常发生时执行,并continue执行下一个循环迭代。 但是,这不是Python会做的吗?

在这种情况下,是, else: continue是多余的,可能会被忽略。

但是,如果在else:块之后还有更多代码,这将不是多余的,因为continue语句将导致该代码被跳过。 这是程序员可能要使用else: continue 例如,如果try:块中的代码完整无例外地完成,则无需对循环中的当前项目进行任何操作,但是如果确实引发了异常,则程序需要捕获该异常并执行其他操作清理之后。 该清理代码可以放在else:块之后。

elsetry子句语法的一部分。 except相反。 这意味着“如果没有例外发生,请执行此操作”。 它与if-else无关(也有一个不幸的名称,令人困惑。即使是python的某些创建者也提到了这一点,但是现在更改它太困难了)

区别在于, else中的代码在没有异常发生时才执行,而代码后续将不管执行。 在您提到的代码示例中,它什么也不做,因为循环仍将继续!

暂无
暂无

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

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