美文网首页
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