美文网首页
python with 用法(记录) 2018-05-22

python with 用法(记录) 2018-05-22

作者: 夏树的宝马 | 来源:发表于2018-05-22 12:00 被阅读14次

    1. with关键字可以使用的地方?

    解释:
    1. 只有实现 __enter__() ,__exit__()方法的才能使用。

    2. with的好处?

    解释:
    1.基本上网上都已经说了
    2.主要是

    3. 在类方法中自定义实现

      1.啰嗦一遍,网上都已有的内容:
        在__enter__() 方法中如果有返回上下文管理器时,我们会把它赋值给  as 后面的语句;在__exit__()方法中,如果我们返回的值为 True就忽略错误处理,相反就重新抛出。
    
       2.当我们以类实现时,如果使用with(实现了 enter、exit方法)关键字,当我们的类实例方法报错时,会自动的被__exit__()方法捕捉到,**同时会退出**。
    
    class Sample:
        def __enter__(self):
            return self
    
        def __exit__(self, type, value, trace):
            print("退出 type:", type)
            print("值 value:", value)
            print("问题  trace:", trace)
            return False
    
        def do_something(self):
            print('do_something')
            bar = 1 / 0
            return bar + 10
    
        def do_something_2(self):
            print('do_something_2')
            bar = 1 / 0
            return bar + 10
    
    with Sample() as sample:
        sample.do_something()# 此时报错就会退出,无论__exit__()是否返回True/False
        sample.do_something_2()
    
    执行结果

    4. 使用标准库contextlib库实现(暂时未学习到)

    参考地址,很详细

    相关文章

      网友评论

          本文标题:python with 用法(记录) 2018-05-22

          本文链接:https://www.haomeiwen.com/subject/bcdhjftx.html