绑定完请刷新页面
取消
刷新

分享好友

×
取消 复制
Python中with语句是干什么用的?
2020-01-16 17:49:23

with 语句适用于对资源进行访问的场合,确保不管使用过程中是否发生异常都会执行必要的“清理”操作,释放资源,比如文件使用后自动关闭、线程中锁的自动获取和释放等。


其他的内容看下面的代码:

一般访问文件资源时我们会这样处理:


Python中with语句是干什么用的?

这样写没有错,但是容易犯两个毛病:

  1. 如果在读写时出现异常而忘了异常处理。
  2. 忘了关闭文件句柄。

以下的加强版本的写法:

Python中with语句是干什么用的?

以上的写法就可以避免因读取文件时异常的发生而没有关闭问题的处理了。代码长了一些。


但使用 with 有更优雅的写法:


Python中with语句是干什么用的?

with 的实现


Python中with语句是干什么用的?

当对象被实例化时,就会主动调用__enter__()方法,任务执行完成后就会调用__exit__()方法, 另外,注意到,__exit__()方法是带有三个参数的(exc_type, exc_value, traceback), 依据上面的官方说明:如果上下文运行时没有异常发生,那么三个参数都将置为 None, 这里三个参数由于没有发生异常,的确是置为了 None, 与预期一致。


修改后不出异常了


Python中with语句是干什么用的?
分享好友

分享这个小栈给你的朋友们,一起进步吧。

星说
创建时间:2019-11-28 12:45:43
作为炎黄子孙,我们有很多知识渊博的祖人,这个祖人指的是在各领域登峰造极的学者论说,我们跟随强大基因的路线,学习,深化自己的知识体系,优化环境。
展开
订阅须知

• 所有用户可根据关注领域订阅专区或所有专区

• 付费订阅:虚拟交易,一经交易不退款;若特殊情况,可3日内客服咨询

• 专区发布评论属默认订阅所评论专区(除付费小栈外)

栈主、嘉宾

查看更多
  • unnamed persona
    栈主

小栈成员

查看更多
  • 外星人6
  • supergirlxu
  • unnamed person1
  • daxuesheng
戳我,来吐槽~