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__()方法的对象都可以用于上下文管理器