python with语句的用法
今天在看Mentor要求的代码中碰到了with这一个关键词,不是太理解,便去google了一下,仔细看了一下别人的解释,基本对with有了一个初步的理解。
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 down with controlled_execution() as thing: some code
在实际的运行过程中,python会首先运行enter里的代码,返回thing,作为as 后面的变量值,然后再运行with模块中的代码,最后会自动执行exit中的代码,而不管with中的代码运行结果如何。这也就是with能简化try-finally语句的原因。所以with通常用在读取文件的操作中,将文件句柄的关闭操作放在exit方法中,这样就不会因忘记释放文件句柄而产生可能出现的错误。
另外,exit()方法的返回值可以用来指示with部分的代码出现的异常是否需要raise,如果返回false,则会raise,否则,不进行任何操作。
参考文章
/***我坚信,一旦你能将某个问题写清楚,你一定弄懂了,所以我要努力地写出来。
&& It does not matter how slow as long as you do not stop***/