• 技术文章 >Python技术 >Python高级

    上下文管理器在python中的原理

    小妮浅浅小妮浅浅2021-03-29 09:59:13原创4173

    本文教程操作环境:windows7系统、Python 3.9.1,DELL G3电脑。

    1、原理

    with实际上是python中的关键字,它可以开启一个对象的上下文管理器协议,实际上,在文件操作时,并不是不需要写文件的关闭,而是文件的关闭操作在 with 的上下文管理器中的协议方法里已经写好了。当文件操作执行完成后, with语句会自动调用上下文管理器里的关闭语句来关闭文件资源。

    2、注意

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

    3、实例

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    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高级指路:python高级

    专题推荐:python 上下文管理器
    上一篇:python3函数有哪些高级特性? 下一篇:python中urlretrieve如何获取远程文件?

    相关文章推荐

    • python UDP编程是什么意思?• python中UDP编程实现通信• python守护线程是什么• python守护线程如何创建?• python上下文管理器的基本介绍• python上下文管理器的用法详解

    全部评论我要评论

    © 2021 Python学习网 苏ICP备2021003149号-1

  • 取消发布评论
  • 

    Python学习网