Python with语句上下文管理器两种实现方法分析
发布网友
发布时间:2023-05-04 18:28
我来回答
共1个回答
热心网友
时间:2023-11-03 18:29
本文实例讲述了Python with语句上下文管理器。分享给大家供大家参考,具体如下:
在编程中会经常碰到这种情况:有一个特殊的语句块,在执行这个语句块之前需要先执行一些准备动作;当语句块执行完成后,需要继续执行一些收尾动作。例如,文件读写后需要关闭,数据库读写完毕需要关闭连接,资源的加锁和解锁等情况。
对于这种情况python提供了上下文管理器(Context Manager)的概念,可以通过上下文管理器来定义/控制代码块执行前的准备动作,以及执行后的收尾动作。
一、为何使用上下文管理器
1、不使用上下文管理器的情况
通过try...finally语句执行异常处理和关闭句柄的动作。
?
1
234
567
logger
=
open
(log.txt
,
w)
try
logger.write(Hello)
logger.write(World)
finally
logger.close()
print
logger.closed
2、使用上下文管理器
默认文件Python的内置file类型是支持上下文管理协议的。
使用上下文管理器with使得依据精简了很多。
?
1234
with
open
(log.txt
,
w) as logger:
logger.write(Hello)