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()
  • 相关阅读:
    文件操作:根据现有类生成所需要的类
    Microsoft JScript 运行时错误: “”未定义
    未完成
    WPF模拟雷达界面效果图
    WebClient模拟网页提交表单
    201319
    Delphi中的InStrRev函数(倒找文本)
    利用IDhttp实现图片下载
    白话解释哈希表
    整理的Delphi常用字符串函数
  • 原文地址:https://www.cnblogs.com/songxiaohua/p/9784084.html
Copyright © 2011-2022 走看看