python 上下文管理器

vi withCM.py #在Linux里编辑文件withCM.py

下面是文件正文

f = open("new.txt","w")
print (f.closed) #输出判断文件是否关闭的属性
f.write("Hello world!")
f.close()
print (f.closed)

在Linux中执行程序

$ python withCM.py
False
True

例子2

代码示例:

coding:utf-8

class VOW(object):
def init(self,text):
self.text = text
def enter(self):
self.text = "enter: " + self.text #添加前缀
return self #注意,这里返回对象!并在下面将其赋值给了myvow
def exit(self,exc_type,exc_value,traceback):
self.text=self.text + "now exit!" #添加后缀

with VOW("你好") as myvow:
print(myvow.text)
print(myvow.text)
print(myvow.text)

输出结果:
enter: 你好
enter: 你好
enter: 你好now exit!

解释:

with EXPR as VAR: #等价于下面的操作

VAR =EXPR #EXPR是某个类
VAR =VAR.enter()
try:
BLOCK #执行语句块
finally:
VAR.exit()

上下文管理器:

规定对象的使用范围,超越范围则“采取处理”
with…as…代码块

任何定义了__enter__()和__exit__()方法的对象都可以用于上下文管理器

posted @ 2016-08-02 23:30  alisonzhu  阅读(224)  评论(0编辑  收藏  举报