美文网首页
使用with自动关闭资源

使用with自动关闭资源

作者: 叶田的学习笔记 | 来源:发表于2018-11-04 17:11 被阅读0次
    with 表达式  [as 目标]:
        代码块
    
    with open('test.txt', 'w') as f:
        f.write('test')
    

    使用with语句能保证当写操作执行完毕后自动关闭文件。

    with语句可以在代码块执行完毕后还原进入该代码块时的现场。包含有with语句的代码块的执行过程如下:
    1、计算表达式的值,返回一个上下文管理器对象。
    2、加载上下文管理器对象的__exit__()方法以备后用。
    3、调用上下文管理器对象的__enter__()方法。
    4、如果with语句中设置了目标对象,则将__enter__()方法的返回值赋值给目标对象。
    5、执行with中的代码块。
    6、如果步骤5中代码正常结束,调用上下文管理器对象的__exit__()方法,其返回值直接忽略。
    7、如果步骤5中代码执行过程中发生异常,调用上下文管理器对象的__exit__()方法,并将异常类型、值及traceback信息作为参数传递给__exit__()方法。如果__exit__()返回值为false,则异常会被重新抛出;如果其返回值为true,异常被挂起,程序继续执行。

    上下文管理器对象:
    它定义程序运行时需要建立的上下文,处理程序的进入和退出,实现了上下文管理协议,即在对象中定义__enter__()和__exit__()方法。

    上下文管理器主要作用于资源共享,因此在实际应用中__enter__()和__exit__()方法基本用于资源分配以及释放相关的工作,如打开/关闭文件、异常处理、断开流的连接、锁分配等。

    相关文章

      网友评论

          本文标题:使用with自动关闭资源

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