欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程语言 > python >内容正文

python

python中with的用法,上下文管理器

发布时间:2025/3/21 python 37 豆豆
生活随笔 收集整理的这篇文章主要介绍了 python中with的用法,上下文管理器 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

一、上下文管理器

含有__enter__和__exit__方法的对象就是上下文管理器

class Foo(object):def __init__(self):print('实例化一个对象')def __enter__(self):print('进入')def __exit__(self, exc_type, exc_val, exc_tb):print('退出')# return Trueobj = Foo()with obj:print('正在执行')

执行结果:

实例化一个对象 进入 正在执行 退出

因为我们在定义Foo时,定义了__enter__和__exit__方法,那么我们实例化的对象obj就是一个上下文管理器,

二、with 上下文管理器:

with 上下文管理器:语句体

当with遇到上下文管理器,就会在执行语句体之前,先执行上下文管理器的__enter__方法,然后再执行语句体,执行完语句体后(无论语句体是否报错),最后执行上下文管理器的__exit__方法

语句体出现异常时,如果 exit 返回 False(默认不写返回值时,即为False),则会重新抛出异常,让with 之外的语句逻辑来处理异常,这也是通用做法;如果返回 True,则忽略异常,不再对异常进行处理

三、with 上下文管理器 as target:

with 上下文管理器 as target:代码语句体

with后面必须跟一个上下文管理器,如果使用了as,则是把上下文管理器的 enter() 方法的返回值赋值给 target,target 可以是单个变量,或者由“()”括起来的元组(不能是仅仅由“,”分隔的变量列表,必须加“()”)

**结论:**使用了 with 语句,不管在处理文件过程中是否发生异常,都能保证 with 语句执行完毕后已经关闭了打开的文件句柄

总结

以上是生活随笔为你收集整理的python中with的用法,上下文管理器的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。