美文网首页
Python 中如何简化with语句中的上下文管理

Python 中如何简化with语句中的上下文管理

作者: 逸筱幻 | 来源:发表于2018-04-27 10:48 被阅读0次

使用with语句时,通常需要定义一个类,并且实现 __enter__ 和 __exit__方法。这样就导致了代码很冗长。
而且为了使用with,必须定义一个类,这样会使代码的可读性并不太好。
下面使一个例子

class Case():
    def __enter__():
        return "result"

    def __exit__():
        return True

//调用方案
with Case() as case:
  print(case);// -> result

对于类似的情况。Python提供了contextlib内置函数库,用于简化上下文管理器的编写

import contextlib

@contextlib.contextmanager
def Case():
    print("__enter__")
    yield "result"
    print("__exit__")

#调用方案
with Case() as case:
  print(case)
#  __enter
#  result
#  __exit__

这种方案的关键是yield语句。yield语句之后为 __exit__的实现,剩下的代码为__enter__的实现。

相关文章

  • Python 中如何简化with语句中的上下文管理

    使用with语句时,通常需要定义一个类,并且实现 __enter__ 和 __exit__方法。这样就导致了代码很...

  • 7、深入类和对象

    1、with语句(上下文管理器) Python 提供了 with 语法用于简化资源操作的后续清除操作,是 try/...

  • Python上下文管理器和with块

    python中with语句用起来很方便,那这后边的原理就是python中的上下文管理器。 1.什么是上下文管理器 ...

  • python上下文管理

    什么是上下文管理 上下文:context的直译, 指的是代码执行过程中的前后状态上下文管理器:python上下文管...

  • python 上下文管理

    简介 上下文管理属于流程控制特性中一部分,在python中,上下文管理语法主要是使用with关键词。with语句会...

  • 6-contextlib

    contextlib 在python 中只要正确实现了上下文管理管理,就可以使用 with 语句。而 contex...

  • 算法面试 - 问题记录

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

  • python 上下文管理器

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

  • python 基础深入

    contextlib 上下文管理器 创建上下文管理实际就是创建一个类,添加enter和exit方法 Python...

  • python的上下文管理器

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

网友评论

      本文标题:Python 中如何简化with语句中的上下文管理

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