with as:with后面的所求值对象必须有 一个__enter__()方法 和 一个 __exit__()方法,该对象被求职后,返回对象的__enter__()方法被调用,这个方法的返回值将赋值给as后面的变量。
当with后面的代码块全部执行完之后,将调用前面返回对象的__exit__方法。
以下两代码块的效果相同:
with open("test.txt") as file:
fileData = file.read()
###################
file = open("/test.txt")
try:
data = file.read()
finally:
file.close()
with 语句提供一个有效的机制,让代码更简练,同时在异常产生时,清理工作更简单。