![](/img/trans.png)
[英]when is it necessary to add an `else` clause to a try..except in Python?
[英]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:
块之后。
else
是try
子句语法的一部分。 与except
相反。 这意味着“如果没有例外发生,请执行此操作”。 它与if-else
无关(也有一个不幸的名称,令人困惑。即使是python的某些创建者也提到了这一点,但是现在更改它太困难了)
区别在于, else
中的代码仅在没有异常发生时才执行,而代码后续将不管执行。 在您提到的代码示例中,它什么也不做,因为循环仍将继续!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.