• python中上下文管理,with的用法


    • 实例化Foo,得到对象a,执行__init__方法,打印第一句;如下:

    在定义Foo时,定义了__enter__和__exit__方法,那么我们实例化的对象obj就是一个上下文管理器,

    含有__enter__和__exit__方法的对象就是上下文管理器。

    所以在这里可以用with

    with 上下文管理器:  

      语句体

    当with遇到上下文管理器时,执行顺序:先执行上下文管理器的__enter__方法 -> 再执行语句体  -> 最后执行__exit__方法.

    举例如下:

    • with调用上下文管理器的 __enter__ 方法时;如果使用了 as 子句,则将 __enter__() 方法的返回值赋值给 as 子句中的目标对象,即下面as后面的obj;

    obj可以是单个变量或()括起来的元组; __enter__ 方法无返回左下图,有返回右下图,举例如下: 

    《--》

    •  下面是我用with 加 上下文管理器连接数据库的例子如下:

    常见的上下文管理的用法:

    with open("/tmp/foo.txt") as file:

      data = file.read() 

    如果使用传统的 try/finally 范式,则要使用类似如下代码:

    somefile = open(r'somefileName')

    try:

       for line in somefile:

        print line

    finally:

       somefile.close()

    • 结论

    使用 with 语句可以减少编码量;不管在处理对象过程中是否发生异常,都能保证 with 语句执行完毕后,关闭了打开对象

     

  • 相关阅读:
    【职业规划】一位资深程序员大牛给予Java初学者的学习路线建议
    一个断点调试的小技巧
    无穷分数
    Spring事务异常回滚,捕获异常不抛出就不会回滚
    理解Servlet和Servlet容器、Web服务器等概念
    图解红黑树及Java进行红黑二叉树遍历的方法
    Majority Element
    Factorial Trailing Zeroes
    Valid Parentheses
    House Robber
  • 原文地址:https://www.cnblogs.com/liuchunxiao83/p/15939085.html
Copyright © 2020-2023  润新知