美文网首页
自定义上下文管理器

自定义上下文管理器

作者: Lutous | 来源:发表于2021-09-15 15:54 被阅读0次
函数形式
# 定义函数为上下文管理器
import contextlib


@contextlib.contextmanager
def open_func(file_name):
    # __enter__ 方法
    print('open file:', file_name, 'in __enter__')
    file_handler = open(file_name, "r")

    try:
        # 重点:一定要使用yield
        yield file_handler
    except Exception as exc:
        print('the exception was thrown')
    finally:
        # __exit__方法
        print('close file:', file_name, 'in __exit__')
        file_handler.close()
        return
类形式
# 实现了__enter__和__exit__的方法,这个类的示例就是一个上下文管理器
class Resource:

    def __enter__(self):
        print("=== connect to resource ===")
        return self

    def __exit__(self, exc_type, exc_val, exc_tb):
        """
        捕获异常、自行处理异常
        :param exc_type:异常类型
        :param exc_val:异常值
        :param exc_tb:异常的错误栈信息
        :return: 默认为False, True --- 若有异常,不再抛出
        """
        print("=== close resource connection ===")

    def operate(self):
        print("=== in operation ===")

相关文章

  • python 上下文管理器

    一、什么是上下文管理器? 上下文管理器类型是python的内置类型之一,上下文管理器的定义:允许用户自定义类来定义...

  • Python上下文管理器

    上下文管理器 概念:实现了上下文协议的对象即为上下文管理器。 上下文管理器的协议: __enter__进入的方法_...

  • python上下文管理器细读

    test 1 上下文管理器,将生成器转化为上下文管理器 test 2 使用上下文管理器,抽象出异常处理 test ...

  • python中上下文管理器

    什么是上下文管理器? 代码的环境就是上下文,实现了上下文管理器协议的类产生的实例就是上下文管理器对象。在类中声名e...

  • Python的上下文管理器

    什么是上下文管理器 上下文管理器是一个对象,它定义了在执行 with 语句时要建立的运行时上下文。 上下文管理器处...

  • Python学习打call第三十一天:上下文管理器

    1.什么是上下文管理 上下文管理器是一个包装任意代码块的对象,上下文管理器保证进入上下文管理器时,每次代码执行的一...

  • python的上下文管理器

    上下文管理器的概念 上下文管理器的任务是代码块执行前准备,代码块执行后收拾。 如何使用上下文管理器? 如何使用上下...

  • Python上下文管理器

    1.与装饰器的区别 上下文管理器是装饰器的近亲,装饰器用于包装函数,上下文管理器用于包装任意代码块. 上下文管理器...

  • 算法面试 - 问题记录

    python上下文管理器,装饰器? (1)上下文管理器知乎链接:https://zhuanlan.zhihu.co...

  • 关闭流要点2_with上下文管理_现场还原

    with语句(上下文管理器)with关键字(上下文管理器),可以自动管理上下文资源,无论什么原因跳出with块,都...

网友评论

      本文标题:自定义上下文管理器

      本文链接:https://www.haomeiwen.com/subject/fczkgltx.html