Python教程

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

本文主要是介绍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 语句执行完毕后,关闭了打开对象

 

 

 

 

 

 

 

这篇关于python中上下文管理,with的用法的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!