在python中使用'finally'子句的范围是什么?

chu*_*use 2 python try-finally

可能重复:
else的目的,最后是异常处理

我想理解为什么声明中finally存在该条款try/except.我理解它的作用,但很明显,如果它在语言中占有一席之地,我会遗漏一些东西.具体来说,在finally字段中编写一个子句与在try/except语句之外写一个子句之间的区别是什么?

Mar*_*ers 14

finally套件是保证执行,在无论发生什么事try套件.

用它来清理文件,数据库连接等:

try:
    file = open('frobnaz.txt', 'w')
    raise ValueError
finally:
    file.close()
    os.path.remove('frobnaz.txt')
Run Code Online (Sandbox Code Playgroud)

无论异常处理程序(exceptsuite)是否捕获异常,或者return代码中是否有语句,都是如此:

def foobar():
    try:
        return
    finally:
        print "finally is executed before we return!"
Run Code Online (Sandbox Code Playgroud)

在循环中使用try/ finally语句,然后使用continue或者break再次执行finally套件来中断循环.保证在所有情况下都可以执行.