美文网首页
Python 进阶——什么是上下文管理器

Python 进阶——什么是上下文管理器

作者: 猿小军 | 来源:发表于2020-12-10 18:12 被阅读0次

    错误读取文件

    # 打开文件
    f = open('file.txt')
    for line in f:
        # 读取文件内容 执行其他操作
        # do_something...
    # 关闭文件
    f.close()
    

    java思维读取文件

    f = open('file.txt')
    try:
        for line in f:
            # 读取文件内容 执行其他操作
            # do_something...
    finally:
        # 保证关闭文件
        f.close()
    

    使用with读取文件

    with open('file.txt') as f:
        for line in f:
            # do_something...
    

    上下文管理器语法

    with context_expression [as target(s)]:
     with-body
    

    一个类在 Python 中,只要实现以下方法,就实现了「上下文管理器协议」:
    enter:在进入 with 语法块之前调用,返回值会赋值给 with 的 target
    exit:在退出 with 语法块时调用,一般用作异常处理

    contextlib模块可简化上下文管理器协议

    
    from contextlib import contextmanager
    @contextmanager
    def test():
        print('before')
        yield 'hello'
        print('after')
    with test() as t:
        print(t)
    # Output:
    # before
    # hello
    # after
    

    相关文章

      网友评论

          本文标题:Python 进阶——什么是上下文管理器

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