在python2.5+中可以用with来保证关闭打开的文件
with open('hello.txt') as f: do some file operations
为什么要引入with呢?
在之前如果要保证关闭文件需要这样:
f = open('hello.txt')try: do some file operationsfinally: f.close()
为了简化这些操作,pyhton2.5中引入with,在进入with时python会自动调用对象的__enter__ 函数,离开with时会调用 __exit__ 函数,如下所示。
class SomeThing(object): def __enter__(self):set things upreturn 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()
程序输出为:
enterhello, worldexit
原文地址:python with原理, 感谢原作者分享。 孝敬父母、疼爱孩子、体贴爱人、善待朋友。