美文网首页
上下文管理器-with

上下文管理器-with

作者: 测试探索 | 来源:发表于2022-11-26 13:46 被阅读0次

一:with做了什么

with启动了对象的上下文管理器

二:上下文管理器协议:

__enter__:进入
    enter方法返回的结果,被as后面的变量接受,with ... as f
__exit__:退出
    with中所有的语句执行完毕后,执行该方法

在python中所有实现了上下文管理器协议的对象,都可以使用with操作

三、初识

f = open("musen.txt","w")
f.close()
print("f的dir方法:",dir(f))

# 等同于如下
 with open("test.txt","w") as f:
     f.write("python")
image.png

四:自定义文件操作的上下文管理器协议

class MyOpen:
    def __init__(self,filename,mode,encoding):
        self.filename = filename
        self.mode = mode
        self.encoding = encoding
    def __enter__(self):
        print("--enter--方法")
        self.f = open(self.filename,self.mode,encoding = self.encoding)
        return self.f

    def __exit__(self, exc_type, exc_val, exc_tb):
        """
        :param exc_type: 异常类型
        :param exc_val: 异常信息
        :param exc_tb: 异常溯源对象
        :return:
        """
        print(exc_type)
        print(exc_val)
        print(exc_tb)
        self.f.close()
        print("--exit--方法")

with MyOpen("musen.txt","w",encoding = "utf-8") as f:
    print(f.write('e23433 '))
    # print(bbb)

print("-----end------")
image.png

相关文章

  • Python上下文管理器

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

  • python上下文管理器细读

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

  • python中上下文管理器

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

  • Python的上下文管理器

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

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

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

  • python 上下文管理器

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

  • python的上下文管理器

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

  • Python上下文管理器

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

  • 算法面试 - 问题记录

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

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

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

网友评论

      本文标题:上下文管理器-with

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