Python中的with及上下文管理器

with、上下文管理器

with

with 一种上下文管理器

def m3():
    with open("output.txt","r") as f:
        f.write("python")

上下文管理器

  • 任何实现了__enter__() 和__exit__()的对象都是上下文管理器
  • 上文:正常进行的代码;下文:出现异常或结束/关闭的代码
  • 上下文管理器可以用with关键字来保证文件可以关闭,是try/finally的替代方式

方法一:__enter__() 和__exit__()
上下文管理流程图:
在这里插入图片描述

方法二:contextlib模块:

from contextlib import contextmanager

@contextmanager
def my_open(path, mode):
    f = open(path, mode)
    yield f
    f.close()
    
with my_open('out.txt', 'w') as f:
    f.write("hello , the simplest context manager")

注:

  • with开始执行
  • yield处暂停执行,上文与下文之间暂停执行

猜你喜欢

转载自blog.csdn.net/weixin_44850984/article/details/89813581
今日推荐