zoukankan      html  css  js  c++  java
  • with 语句浅析

    with 语句是读写文件的优雅写法

    with open('xxx.txt','w') as f:
        f.writelines(['I','love','the','world'])

    由于文件对象会占用操作系统资源,同时操作系统同一时间打开的文件数量有限,所以在读写的过程中要确保,无论是否出现异常,都需要最后调用close()方法,而with语句会调用close()

    其中涉及到的概念: 上下文管理器

    定义

    上下文管理器是这样一个对象:它定义程序运行时需要建立的上下文,处理程序的进入和退出,实现了上下文管理协议,即在对象中定义了 __enter__() 和 __exit__() 方法。
    
    __enter__():进入运行时的上下文,返回运行时上下文相关的对象,with 语句中会将这个返回值绑定到目标对象。 
    
    __exit__(exception_type, exception_value, traceback):退出运行时的上下文,定义在块执行(或终止)之后上下文管理器应该做什么。它可以处理异常、清理现场或者处理 with 块中语句执行完成之后需要处理的动作。

    自定义上下文管理器

    class Context(object):
        def do_something(self):
            print('do something')
    
        def __enter__(self):
            print('run __enter__')
            return self
    
        def __exit__(self, exc_type, exc_val, exc_tb):
            print('run __exit__')
            return True
    
    with Context() as ctx:
        ctx.do_something()
  • 相关阅读:
    POJ 1185 状压DP
    POJ 1321
    hdu 1384 查分约束
    hdu 2196 树形dp
    hdu 4612 双联通缩点+树形dp
    poj 3469 最小割模板sap+gap+弧优化
    hdu 4858 容器的简单模拟
    hdu 4857 逆向拓扑排序+反向输出
    isap算法模板poj 1273gap+弧优化 最大流
    ISAP 算法的学习
  • 原文地址:https://www.cnblogs.com/songxiaohua/p/9784084.html
Copyright © 2011-2022 走看看