python知识点梳理--with语句

上下文管理协议与with语句

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

上下文管理器

上下文管理器是指定义了__enter__函数和__exit__函数的类的对象,这种对象支持上下文管理协议. 上下文管理协议是指在类中定义__enter函数和__exit().

with context_expr as sth:
          some code

context_expr是一个上下文管理器. Python中的with语句要求对象实现__enter__和__exit__函数, 调用with语句时, 会先调用__enter__函数;在退出时则会调用__exit__函数. __exit__函数一方面可以释放资源, 另一方面则可以处理异常.

如果是以下语句: with context_expr() as sth, 那么在调用__enter__函数后, 将返回值写入sth中.

注意__exit__()函数有三个参数:exc_ty、 exc_val、tb. 其中exc_ty表示异常类型, exc_val表示异常值, tb表示对异常的追溯. exit()可以以某种方式来使用异常信息, 或者返回None表示什么都没有发生.

猜你喜欢

转载自blog.csdn.net/weixin_37486217/article/details/83445789