标签:
with...as叫做上下文管理器,作用是进入一个对象的作用域和离开时,可以执行执行一定的操作。这个操作是可以自己
设定的。
写个例子学习一下:
class test(): def __init__(self): self.text = "hello" def __enter__(self): self.text += " world" return self #这句必须要有,不然with ... as 时,as后面的变量没法被赋值 def __exit__(self, arg1, arg2, arg3): #一共四个参数,后面四个参数是好像是关于异常信息的,没研究过,先这样写着 self.text += "!" def Print(self): print self.text try: with test() as f: #在with ... as的作用域内,进入会执行test()的__enter__()函数,出作用域执行__exit__()函数 f.Print() raise StopIteration except StopIteration: f.Print()
上面程序的运行结果是:
hello world
hello world!
1.即使发生了异常,只要出了with...as的作用域,__exit__()函数就会被执行
2.f的作用域并不局限于with ... as内
3.分析打印的结果,可以看出来,test类中函数的执行顺序是 __init__() -->__enter__() ---> __exit__()
参考:http://www.cnblogs.com/vamei/archive/2012/07/10/2582787.html
标签:
原文地址:http://www.cnblogs.com/abcdk/p/5790329.html