with 语句适用于对资源进行访问的场合 , 确保不管使用过程中是否发生异常都会执行必要的“清理”操作 , 释放资源 , 比如文件使用后自动关闭、线程中锁的自动获取和释放等 。
其他的内容看下面的代码:
一般访问文件资源时我们会这样处理:
文章插图
【Python中with语句是干什么用的?】这样写没有错 , 但是容易犯两个毛病:
- 如果在读写时出现异常而忘了异常处理 。
- 忘了关闭文件句柄 。
文章插图
以上的写法就可以避免因读取文件时异常的发生而没有关闭问题的处理了 。代码长了一些 。
但使用 with 有更优雅的写法:
文章插图
with 的实现
文章插图
当对象被实例化时 , 就会主动调用__enter__()方法 , 任务执行完成后就会调用__exit__()方法 , 另外 , 注意到 , __exit__()方法是带有三个参数的(exc_type, exc_value, traceback), 依据上面的官方说明:如果上下文运行时没有异常发生 , 那么三个参数都将置为 None, 这里三个参数由于没有发生异常 , 的确是置为了 None, 与预期一致 。
修改后不出异常了
文章插图
推荐阅读
- 世界上最危险的海洋生物 海洋中最可怕的生物
- PHP中钩子的理解与实例教程
- 中国有几大无人区 中国的四大无人区是什么地方
- 网络中经常接触的Ping 一次性教你弄懂如何检测三层网络
- 安溪,做大现代茶业 做大中国茶都
- 茶创新工场,专注于中国茶业的电商平台即将上线
- 中医提醒,五种中药茶常喝须谨慎
- 初中优秀作文 以关爱为话题的作文
- 加多宝 广药销量均增 茶饮料市场刮中国风
- 做人,要么忍,要么狠