
在python2.5+中可以用with来保证关闭打开的文件
with open('hello.txt') as f:
do some file operations
为什么要引入with呢?
在之前如果要保证关闭文件需要这样:
f = open('hello.txt')
try:
do some file operations
finally:
f.close()
为了简化这些操作,pyhton2.5中引入with,在进入with时python会自动调用对象的__enter__ 函数,
离开with时会调用 __exit__ 函数,如下所示。
class SomeThing(object):
def __enter__(self):
set things up
return self
def __exit__(self, type, value, traceback):
tear things down
是不是很简单?
比如我们可以实现一个自动释放资源的connection类
class Connection(object):
def __enter__(self):
print 'enter'
return self def __exit__(self, type, value, traceback):
print 'exit' def say_hi(self):
print 'hello, world' def open_connection():
return Connection() with open_connection() as conn:
conn.say_hi()
程序输出为:
enter
hello, world
exit