python之with语句

今天突然想起with语句,想了想,嗯......虽然知道它的用法,但是不知道它的用途何在,于是就google一下,看到了这样一篇文章

http://effbot.org/zone/python-with-statement.htm

在我们实际编程中,我们常常会遇到这样的情况,就是在处理完成一件事情后,需要做一下收尾工作,这样的做法在with语句产生之前一直都是由下面的代码代劳的

1 try:
2     do something
3 finally:
4     do something left

e.g.

try:
    fp = open('filename', 'w')
finally:
    fp.close()

但是考虑到代码的简洁性,在Python 2.5后的版本中,开始引入了with语句,它是通过在相应的类里面加入下面的两个函数实现的

class a_class:
    
    def __enter__(self):
        do something
    return something
def __exit__(self): do somethiing left

在with语句执行时,都要执行__enter__函数,并把返回的对象赋值给as后面的变量,在语句块结束时都要执行__exit__函数,这样通过把相应的代码放入到这两个函数中就可以解决最后需要处理的问题

with open('filename', 'w') as file:
    page = file.read()
    ...
    ...
原文地址:https://www.cnblogs.com/MyselfDancing/p/3562462.html