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()
  • 相关阅读:
    数据恢复与硬盘数据结构
    Add dynamic tooltips to buttons in dialog(转)
    Visual C++ 2008资源全搜罗(转)
    (转)学习数据恢复(四)
    如何开启Vista Aero效果
    硬盘FAT文件系统原理的详细分析
    web form弹出提示框
    WIN32_FIND_DATA and CFileFind
    编程老手与高手的误区
    (转)解读NTFS(三)
  • 原文地址:https://www.cnblogs.com/songxiaohua/p/9784084.html
Copyright © 2011-2022 走看看