• python中实现上下文管理器的两种方法


    上下文管理器:

        python中实现了__enter__和__exit__方法的对象就可以称之为上下文管理器

    实现方法一举例:

      def File(object):

        def __init__(self, file_name, file_model):

          self.file_name = file_name

          self.file_model = file_model

        def __enter__(self):

          self.f =  open(self.file_name, self.model) 

          return self.f

        def __exit(self):

          self.f.close()

    以下就实现了简单的上下文管理器

    使用方法:

      with File("1.tex", "r") as f:

        f.write("hello world")

    以下代码实现起来更加简洁明了, 不用再调用close()关闭文件

    实现方法二举例:

      Python 还提供了一个 contextmanager 的装饰器,更进一步简化了上下文管理器的实现方式。通过 yield 将函数分割成两部分,yield 之前的语句在 __enter__ 方法中执行,yield 之后的语句在 __exit__ 方法中执行。紧跟在 yield 后面的值是函数的返回值。

       from contextlib import contextmanager

      @contextmanager

      def file (file_name, file_model):

        f = open(file_name, file_model)

        yield f

        f.close()

    以上也实现了上下文管理器,使用方法和以上的类似

      with file("2.tex") as f:

        f.write("hello world")

     
  • 相关阅读:
    提供思路的一些视角,两种方法。
    试错?捷径?
    AntV G2 toolTip 自定义显示 One'_
    Vue 鼠标滚轮控制左右滑动 One'_
    Ant Design of Vue table表格 点击一行选中效果 One'_
    记录百度地图marker中label现隐 One'_
    inputplaceholder css样式 One'_
    VUE + Springboot + SM4前端加密 后端解密 One'_
    复选框样式复写 One'_
    echarts 3D地图 One'_
  • 原文地址:https://www.cnblogs.com/skaarl/p/9671945.html
Copyright © 2020-2023  润新知