6. with语句

2017-04-22  本文已影响11人  Shirley_奋进中的虾米

场景:简化try-except-finally,从流程图中把try, except和finally处理资源分配、释放的相关代码去掉,比如处理文件(数据、日志、数据库等)、线程资源、简单同步、数据库连接等。只适合工作于支持『上下文管理协议』的对象,所以只有内建了『上下文管理』的对象可以和with一起工作。

支持上下文管理协议的对象有:file, decimal.Context, thread.LockType, threading.Lock,threading.RLock, threading.Condition等,最常用的应该是file。

举个栗子:

with open('/home/work/myfile.txt', 'r') as f:   

    for line in f:

        print line

打开文件,如果一切正常,把文件对象赋值给f,然后迭代输出文件中的每一行,当完成时,关闭文件。如果开始/中间/结束发生任何异常,会执行清理代码,文件会自动关闭。

上一篇 下一篇

猜你喜欢

热点阅读