什么是Python最后语句

  介绍

本篇文章为大家展示了什么是Python最后语句,代码简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

有些时候,程序在试块里打开了一些物理资源(例如数据库连接,网络连接和磁盘文件等),这些物理资源都必须被显式回收。

Python的垃圾回收机制不会回收任何物理资源,只能回收内存中对象所占用的内存。

什么是Python最后语句

那么在哪里回收这些物理资源呢?在试块里回收,还是在除了块中进行回收?假设程序在试块里进行资源回收,根据图1所示的异常捕获流程,如果试块的某条语句引发了异常,该语句后的其他语句通常不会获得执行的机会,这将导致位于该语句之后的资源回收语句得不到执行。如果在除了块里进行资源回收,因为除了块完全有可能得不到执行,这将导致不能及时回收这些物理资源。

为了保证一定能回收在试块中打开的物理资源,异常处理机制提供了最后块。不管试块中的代码是否出现异常,也不管哪一个除了块被执行,甚至在试块或除块中执行了返回语句,最后块总会被执行。

Python完整的异常处理语法结构如下:

试题:   ,,,#业务实现代码   except  SubException  as  e:   ,,,#异常处理块1   ,,,…   except  SubException2  as  e:   ,,,#异常处理块2   ,,,…   其他:   ,,,#正常处理块   finally :   ,,,#资源回收块   ,,,…

在异常处理语法结构中,只有试块是必需的,也就是说:如果没有试块,则不能有后面的除了块和最后块;除了块和最后块都是可选的,但除了块和最后块至少出现其中之一,也可以同时出现,可以有多个除了块,但捕获父类异常的除了块应该位于捕获子类异常的除了块的后面;不能只有试块,既没有除了块,也没有最后块;多个除了块必须位于试块之后,最后块必须位于所有的除了块之后。

看一下程序

import 操作系统   def 测试():   ,,,fis =,没有   ,,,试一试:   ,,,,,,,fis =,开放(“a.txt")   ,,,except  OSError  as  e:   ,,,,,,,印刷(e.strerror)   ,,,,,,,#,返回语句强制方法返回   ,,,,,,,return ,,,,,,, #①   ,,,,,,,os._exit (1),,,,, #②   ,,,最后:   ,,,,,,,#,关闭磁盘文件,回收资源   ,,,,,,,if  fis  is  not 没有:   ,,,,,,,,,,,试一试:   ,,,,,,,,,,,,,,,#,关闭资源   ,,,,,,,,,,,,,,,fis.close ()   ,,,,,,,,,,,except  OSError  as 埃克斯波特学院:   ,,,,,,,,,,,,,,,印刷(ioe.strerror)   ,,,,,,,印刷(“执行最后块里的资源回收!“)   测试()

上面程序在试块后增加了最后一块,用于回收在试块中打开的物理资源。注意在程序的除了块中①处有一条返回语句,该语句强制方法返回。在通常情况下,一旦在方法里执行到返回语句,程序将立即结束该方法:现在不会了,虽然返回语句也强制方法结束,但一定会先执行最后块的代码只

运行上面程序,将看到如下运行结果:

No  such  file 或是目录   执行最后里的资源回收!

上面的运行结果表明在方法返回之前执行了最后一块的代码。将①处的返回语句注释掉,取消②处代码的注释,即在异常处理的除了块中使用os._exit(1)语句来退出Python解释器。运行上面代码,将看到如下运行结果:

No  such  file 或是目录

上面的运行结果表明最后块没有被执行。如果在异常处理代码中使用os.exit(1)语句来退出Python解释器,则最后块将失去执行的机会。

除非在试块,除了块中调用了退出Python解释器的方法,否则不管在试块,除了块中执行怎样的代码,出现怎样的情况,异常处理的最后一块总会被执行。调用sys.exit()方法退出程序不能阻止最后块的执行,这是因为sys.exit()方法本身就是通过引发SystemExit异常来退出程序的。

在通常情况下,不要在最后块中使用如恢复或提高等导致方法中止的语句(提高语句将在后面介绍),一旦在最后块中使用了恢复或提高语句,将会导致试块,除了块中的回报,提高语句失效。看如下程序:

def 测试():   ,,,试一试:   ,,,,,,,#,因为最后块中包含了返回语句   ,,,,,,,#,所以下面的返回语句失去作用   ,,,,,,,return 真实的   ,,,最后:   ,,,,,,,return 错误的   时间=a 测试()   print ()

什么是Python最后语句