with语句适用于对资源进行访问的场合,确保不管使用过程中是否发生异常都会执行必要的清理操作,释放资源,比如文件使用后自动关闭、线程中锁的自动获取和释放等;
with语句即上下文管理器,在程序中用来表示代码执行过程中所处的前后环境。上下文管理器:含有__enter__和__exit__方法的对象就是上下文管理器。
enter():在执行with语句之前,首先执行该方法,通常返回一个实例对象,如果with语句有as目标,则将对象赋值给as目标。
exit():在执行with语句结束后,自动调用__exit__()方法,用户释放资源,若此方法返回布尔值True,程序会忽略异常。
使用环境:文件读写、线程锁的自动释放等。
with context_expression [as target(s)]:
with-body
这里context_expression要返回一个上下文管理器对象,该对象并不赋值给as子句中的target(s),而是会将上下文管理器的__enter__()方法的返回值赋值给target(s)。
不太清楚的可以参考链接: