知行编程网知行编程网  2022-11-15 14:30 知行编程网 隐藏边栏  4 
文章评分 0 次,平均分 0.0
导语: 本文主要介绍了关于上下文管理器在python中的原理的相关知识,包括python logging模块,以及python 消息中间件这些编程知识,希望对大家有参考作用。

python中上下文管理器的原理



本文教程操作环境:

windows7系统、Python 3.9.1,DELL G3电脑。



1、原理


with其实是python中的一个关键字,可以打开一个对象的上下文管理器协议。其实对文件进行操作的时候,并不一定要写文件的关闭,而是文件的关闭操作是在上下文管理器的 with 中的协议方法中写的。当文件操作完成后,with语句会自动调用上下文管理器中的close语句来关闭文件资源。



2、注意


上下文管理器

一定能够保证退出步骤的执行

。如果进入上下文管理器,根据定义,一定会有退出步骤。即使内部的代码抛出异常,这点也成立。事实上,如果退出步骤处理合适,那么上下文管理器的退出代码为处理这类异常提供一个机会(虽然不强制要求一定要处理异常)。



3、实例

class TestContext:
 
    def __enter__(self):
        print('__enter__')
        return 1
 
    def __exit__(self, exc_type, exc_value, exc_tb):
        print('exc_type: %s' % exc_type)
        print('exc_value: %s' % exc_value)
        print('exc_tb: %s' % exc_tb)
 
with TestContext() as t:
    print('t: %s' % t)
    
# Output:
# __enter__
# t: 1
# exc_type: None
# exc_value: None
# exc_tb: None


在这个例子中,我们定义了


TestContext 类,它分别实现了 __enter__ 和 __exit__ 方法。



这样一来,我们就可以把

TestContext 当做一个「上下文管理器」来使用,也就是通过 with TestContext() as t 方式来执行。

从输出结果可以看出,具体执行过程如下:

__enter__ 在进入 with 语句块之前被调用,该方法的返回值被赋给 with 之后的 t 变量;


__exit__ 在执行完 with 语句块之后被调用。



以上就是上下文管理器在

python中的原理,通过本篇文章的学习,我们可以了解具体with的执行方法,以及两种方法的实现,希望对大家使用上下文管理器有所帮助。

更多Python高级指路:

本文为原创文章,版权归所有,欢迎分享本文,转载请保留出处!

知行编程网
知行编程网 关注:1    粉丝:1
这个人很懒,什么都没写
扫一扫二维码分享