我在学习了异常处理之后,在很多资料中和try/except同时介绍的还有另一个语句。With/as语句。因为自己有JAVA的基础,所以在前面自学python基础编程的过程中一直很顺利,没遇到什么难题,但是直到遇到With/as。它是这样定义的:
从这个结构,我只看出2点信息。
1、as可以省略
2、With/as后面可以写一个语句块
除了看出这2点,我实在想不通它有什么用。于是在网上找了很多资料,结果查到的都是官方的解答:
顿时心里一万只神兽路过,考虑过初学者的感受吗,说的这么专业,谁看得懂啊。
后来再找资料,看看有没有什么具体例子说明,然后找到一些资料,说是try/finally的简化版(try/finally请看上一篇),比如:
try/finally版
上面代码中,在finally里关闭文件句柄,就是保证在读取文件的时候出错,或读取完文件之后关闭文件句柄,不然文件会被一直占用。
下面看一下With/as版:
With/as版和try/finally版实现的功能是一样的,嗯,看了这个例子之后感觉似乎有点懂了,上面2个代码With/as就是简化try/finally里关闭句柄那句代码。With/as在读取文件完成或出错的时候会自动关闭文件句柄。不用我们在手动写一句关闭文件句柄的代码。
理解上面读取文件的例子之后,我就在想With/as还能应用在什么场景上呢,在其他场景里用With/as时遇到错误会自动执行什么代码呢?于是又在网上找资料,但是清一色的,所有资料都是以上面读取文件的例子来做介绍。并没有其他应用场景的介绍。
所以我对With/as语句的理解就只停留在读取文件会自动关闭文件句柄上。
这篇文章纯属讨论篇,大家对With/as语句有什么更好的理解,或者其他的应用场景,欢迎评论。
赏