关于try语句中的python:else子句…它有什么用处

else clause in try statement… what is it good for

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
Python try-else

从Java背景来看,我不太了解EDCOX1 0条子句的用处。

根据文件

It is useful for code that must be
executed if the try clause does not
raise an exception.

但是为什么不把代码放在try块之后呢?我好像错过了一些重要的东西…


else子句特别有用,因为您知道try套件中的代码是成功的。例如:

1
2
3
4
5
6
7
8
for arg in sys.argv[1:]:
    try:
        f = open(arg, 'r')
    except IOError:
        print 'cannot open', arg
    else:
        print arg, 'has', len(f.readlines()), 'lines'
        f.close()

您可以安全地对f执行操作,因为您知道它的分配成功了。如果代码只是在尝试之后…但是,您可能没有f


考虑

1
2
3
4
5
6
try:
    a = 1/0
except ZeroDivisionError:
    print"Division by zero not allowed."
else:
    print"In this universe, division by zero is allowed."

如果你把第二个print放在try/except/else块之外会发生什么?


它适用于只在没有引发异常时才要执行的代码。