else

Python 中, 我们经常遇到else 关键字,

如果是在if 判断中, else 比较容易理解,

但是在异常捕获里, else 也会被用到, 这就难理解了

异常捕获

python 中的异常捕获, 如下

try:
    x = 1/0
except ZeroDivisionError as e:
    print('value exception')

打印value exception

触发了ZeroDivisionError 异常


else 关键字如何应用进去呢, 如下

try:
    x = 1/0
except ZeroDivisionError as e:
    print('value exception')
else:
    print('else stuff')

输出

value exception

没有触发 else, 如果没有异常呢

try:
    x = 1/1
    print('try ...')
except ZeroDivisionError as e:
    print('value exception')
else:
    print('else stuff')

输出

try ...
else stuff

触发了else

异常捕获中的else是在没有异常的时候触发的

函数中的try-except-else

def test():
    try:
        x = 1/1
        print('try...')
        return 'try...'
    except ZeroDivisionError as e:
        print('value exception')
    else:
        print('else stuff')
        return 'else stuff'

print(test())

我们可以得到

try...
try...

第一个try...是在x = 1/1下的print 输出的, 第二个try...test() 函数返回后最后一行输出的,

注意, 这里虽然没有异常, 但并没有触发else

所以, 如果在try中出现了出现了return的语句, else 就不会被触发

right