python - 上下文管理协议(with + __enter__ + __exit__)

上下文管理协议:

with + __enter__ + __exit__

#上下问管理协议:
#with + __enter__ + __exit__

class Test():
    def __init__(self,file):
        self.file = file

    def __enter__(self):
        print("执行enter")

    def __exit__(self, exc_type, exc_val, exc_tb):
        print("执行exit")
        #异常类型
        print(exc_type)
        #异常的数值
        print(exc_val)
        #异常的traceback
        print(exc_tb)

        # return True

# with 开始执行时触发Test __enter__方法
# 当with 内的代码执行完后,执行__exit__方法
with Test("a.txt") as f:
    print(sadsada)

#总结:
# 执行代码块
# 1.没有异常的情况下,整个代码块运行完毕后去触发__exit__,它的三个参数都为None
# 2.有异常的情况下,从异常出现的位置直接触发__exit__
#     a.如果__exit__的返回值为True,代表吞掉了异常
#     b.如果__exit__的返回值不为True,代表直接报异常
# 3.__exit__的运行完毕,代表了整个with语句的执行完毕.

#用途:
# 1.使用with语句的目的就是把代码放入with中执行,with结束后,自动完成清理工作,无须手动干预
# 2.在需要管理一些资源比如文件,网络链接和锁的编程环境,可以在__exit__中定制自动释放资源的机制,你无须再去关心这个问题.

 

转载于:https://www.cnblogs.com/Anec/p/9796826.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值