2013-12-14 36 views
2

如果except子句中有return指令,那么使用else子句有什么意义?try-except-else语句的用例

​​

我问这个问题,因为Django文档做它在some point,在vote()功能。考虑到except子句中的return指令无论如何都会停止函数的执行,为什么他们使用else子句隔离只在没有引发异常时才执行的代码?他们本可以完全省略else条款。

回答

2

如果在try:套件中存在异常,则会执行else:套件。换句话说,只有在出现实际例外的情况下,才会使用except:套件并使用return语句。

在我看来,return声明是什么在这里是多余的;一个pass就足够了。如果还有其他代码,应使用else:套件作为try,如果没有引发异常,则应执行只有,但可能引发本应不被捕获的异常。

你是正确的except子句中使用return的为else:代码有些多余的那款让。整个套件可以去凹陷和else:线删除:

def foo(): 
    try: 
     # Some code 
    except: 
     # Some code 
     return 

    # Some code 
+0

我认为这一点是,他们可能只是省略'else'完全。它的风格。 – katrielalex

+0

@katrielalex:只有当“传递”不仅仅是说明性的。否则,无论上下文如何,'else:pass'都是**总是**冗余的。 –

+0

当然'通过'是多余的。我的意思是删除'else'和缩进'pass'在语义上也是相同的。 – katrielalex