深入理解python with 语句,自定义上下文管理器

        python中with 语句作为try/finally 编码范式的一种替代, 适用于对资源进行访问的场合,确保不管使用过程中是否发生异常都会执行必要的”清理”操作,释放资源,比如文件使用后自动关闭、线程中锁的自动获取和释放等

1. 使用with打开文件


你应该见过下面这种打开文件的方式

with open('data', 'r', encoding='utf-8') as f:
    data = f.readlines()

上面的写法,与下面的写法在最终效果上是一致的

f = open('data', 'r', encoding='utf-8')
try:
    data = f.readlines()
except:
    pass
finally:
    f.close()

对比两段代码不难发现,使用with语句时,代码更加简洁,而且不用主动关闭文件,在with语句体退出时,会自动关闭文件,即便with语句体中发生了异常。

2. 上下文管理器和with 语句有关的概念

想要理解with语句,就必须先理解以下几个概念

2.1 上下文管理协议

简单来说,就是实现两个方法,__enter__() 和__exit__()

2.2 上下文管理器

实现了__enter__() 和__exit__()的对象就是上下文管理器

2

猜你喜欢

转载自blog.csdn.net/qq_15371293/article/details/131990757
今日推荐