with在python中通常被用来做资源管理,和异常处理的。
比如我们打开文件,经常能看到用的是with吧,with open这样的用法。这是显示的作用,异常处理就是隐式的。用with能确保,如果IO流出现问题不会阻塞其他进程。
如果不用with的话,该怎么处理文件io呢
file = open('file-path', 'w')
try:
file.write('test')
finally:
file.close()
能看到一定要确保最后调用文件对象的close方法。
如果用with来做,发现可以省略显式调用close方法,with会去做。
with open('file-path', 'w') as file:
file.write('test')
常用的需要close的场景,比如数据库的连接,一般需要close,还有例如smtp的连接。