博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python with语句
阅读量:6041 次
发布时间:2019-06-20

本文共 1215 字,大约阅读时间需要 4 分钟。

with是python2.5以后才有的,它实质是一个控制流语句,with可以用来简化try-finally语句。它的主要用法是实现一个类__enter__()和__exit__()方法。

class controlled_execution:    def _enter__(self):        set things up        return thing    def __exit__(self, type, value,  traceback):        tear thing downwith controlled_execution() as thing:    some code
  在实际的运行过程中,python会首先运行enter里的代码,返回thing,作为as 后面的变量值,然后再运行with模块中的代码,最后会自动执行exit中的代码, 而不管with中的代码运行结果如何。这也就是with能简化try-finally语句的原因。所以with通常用在读取文件的操作中,将文件句柄的关闭操作放在exit方法中, 这样就不会因忘记释放文件句柄而产生可 只要支持环境管理协议(Context Management Protocol),就可以使用with as语句。支持环境管理的类,必须实现__enter__()与__exit__()两个方法,这样的类成为环境管理员(Context Manager) 例如:
class FileReader:    def __init__(self, filename):        self.filename = filename        def __enter__(self):        self.file = open(self.filename, 'r', encoding='UTF-8')        return self.file        def __exit__(self, type, msg, traceback):        if type:            print(msg)       # 作你的额外处理        self.file.close()        return False

 在实际的运行过程中,python会首先运行enter里的代码,返回thing,作为as 后面的变量值,然后再运行with模块中的代码,最后会自动执行exit中的代码,而不管with中的代码运行结果如何。这也就是with能简化try-finally语句的原因。所以with通常用在读取文件的操作中,将文件句柄的关闭操作放在exit方法中,这样就不会因忘记释放文件句柄而产生可能出现的错误。

转载于:https://www.cnblogs.com/seablog/p/7133388.html

你可能感兴趣的文章
在Oracle中删除所有强制性外键约束
查看>>
【R】R语言使用命令行参数 - [编程技巧(Program Skill)]
查看>>
经典算法题每日演练——第二题 五家共井
查看>>
存储过程中拼接的变量和点的问题
查看>>
ASP.NET那点不为人知的事(一)
查看>>
HTML 表格
查看>>
VMware 虚拟化编程(7) — VixDiskLib 虚拟磁盘库详解之三
查看>>
php 未实例化类调用方法的问题
查看>>
我对读计算机软件专业硕士的几点看法
查看>>
用JS写CSS
查看>>
TOJ4537: n阶行列式
查看>>
3.16
查看>>
表单文件上传与文件下载
查看>>
下午考
查看>>
创建字符设备的三种方法
查看>>
走在网页游戏开发的路上(六)
查看>>
nginx 配置的server_name参数(转)
查看>>
Uva592 Island of Logic
查看>>
C++基础代码--20余种数据结构和算法的实现
查看>>
footer固定在页面底部的实现方法总结
查看>>