目录
一、with语句的作用:
二、将with语句用于自定义的类:
一、with语句的作用:
1、适用于对资源进行访问的场合,确保不管使用过程中是否发生异常都会执行必要的“清理”工作。
2、释放资源:文件使用之后关闭、线程中的锁自动获取、释放。
二、将with语句用于自定义的类:
# 引入魔法函数:__enter__ __exit__
class Myclass:
def __enter__(self):
print('__enter__ is call!')
return self
def process1(self):
print('process1')
def process2(self):
a = 1/0
print('process2')
def __exit__(self,exc_type,exc_value,traceback):
print('__exit__ is call!')
print(f'type:{exc_type}')
print(f'value:{exc_value}')
print(f'trace:{traceback}')
如果是直接调用自定义的类,必然会报错。
mm = Myclass()
mm.process2()
# ZeroDivisionError: division by zero
如果使用with语句调用自定义的类:
with Myclass() as mc:
mc.process1()
mc.process2()
会有如下的提示信息:
"""
__enter__ is call!
process1
__exit__ is call!
type:
value:division by zero
trace:
"""
无论执行过程中是否异常抛出,都会继续执行下面的程序。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)