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

本文深入探讨Python的with语句,它作为try/finally的替代,确保资源在使用后自动清理。内容涵盖with语句打开文件、上下文管理协议、上下文管理器的概念,如__enter__()和__exit__()方法,以及如何用with控制线程锁释放,防止死锁。此外,还介绍了同时打开多个文件的方法。最后,通过实例展示了如何自定义上下文管理器来统计代码段的运行时长,提高调试性能。
摘要由CSDN通过智能技术生成

        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语句,就必须先理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

刘贤松

一本万利

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值