try语句中的else子句...有什么用处

3 投票
3 回答
2475 浏览
提问于 2025-04-16 05:54

可能重复的问题:
Python中的try-else

我之前是学Java的,对Python里的else这个部分有点搞不懂。

根据文档的解释:

它用于在try块没有抛出异常时需要执行的代码。

但是为什么不把这些代码放在try块后面呢?我感觉我好像漏掉了什么重要的东西……

3 个回答

3

这是为了那些你只想在没有发生错误的时候执行的代码。

3

考虑一下

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 这个块的外面,会发生什么呢?

20

else 这个部分特别有用,因为它能让你确认 try 里面的代码执行成功了。举个例子:

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 进行操作,因为你知道它的赋值是成功的。如果代码只是放在 try ... except 后面,你可能根本没有 f 这个变量。

撰写回答