Python的'with'语句,我应该使用contextlib.closing吗?

9 浏览
0 Comments

Python的'with'语句,我应该使用contextlib.closing吗?

这是来自flask教程第三步:

from contextlib import closing
def init_db():
    with closing(connect_db()) as db:
        with app.open_resource('schema.sql') as f:
            db.cursor().executescript(f.read())
        db.commit()

关于第4行,我必须导入并调用'contextlib.closing()'吗?

当我学习到with语句时,很多文章说它会在处理完后自动关闭文件,就像下面这样(与Finally一样:thing.close()

with open('filename','w') as f:
    f.write(someString);

即使我不使用contextlib.closing(),像下面这样,有什么区别吗?

这是2.7.6版本的,谢谢。

def init_db():
    with connect_db() as db:
        with app.open_resource('schema.sql') as f:
            db.cursor().executescript(f.read())
        db.commit()

0