python with语句

来源:互联网 发布:淘宝店铺产品分类设置 编辑:程序博客网 时间:2024/06/05 08:20

python-with


使用方法:

每个自带 __enter____close__的对象均可使用with 语句进行异常处理

with context_expression [as target(s)]:    with-body

例子:

with open('xxx', 'r') as fIn:    lstLine = fIn.readlines()# 会自动调用 fIn.close()函数 进行清理 相当于写 try...except...finally...# 多项操作with open("x.txt") as f1, open('xxx.txt') as f2:    do something with f1,f2# 常规操作try:    with open('xxx', 'r') as fIn:        stLine = fIn.readlines()        ...except Exception as e:    print(e)

工作原理:

当使用with语句时, with 会自动调用目标对象的
self.__enter__()函数, 让对象自行初始化资源等操作

然后当出作用域时,会自动调用self.__close__()函数
让对象自行处理资源释放操作

with 工作流程

context_manager = context_expressionexit = type(context_manager).__exit__  value = type(context_manager).__enter__(context_manager)exc = True   # True 表示正常执行,即便有异常也忽略;False 表示重新抛出异常,需要对异常进行处理try:    try:        target = value  # 如果使用了 as 子句        with-body     # 执行 with-body    except:        # 执行过程中有异常发生        exc = False        # 如果 __exit__ 返回 True,则异常被忽略;如果返回 False,则重新抛出异常        # 由外层代码对异常进行处理        if not exit(context_manager, *sys.exc_info()):            raisefinally:    # 正常退出,或者通过 statement-body 中的 break/continue/return 语句退出    # 或者忽略异常退出    if exc:        exit(context_manager, None, None, None)     # 缺省返回 None,None 在布尔上下文中看做是 False

参考:

浅谈 Python 的 with 语句
理解Python中的with…as…语法

阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 客车网站 中国大巴客车网 中国二手客车网 客车吧 客车网 宇都紫宫苑哪一部好看 宇飞来手机多少钱一部 宇都 宇鑫 宇鑫物流单号跟踪 豪爵宇钻 豪爵宇钻踏板车价格表 宇钻125踏板摩托车 豪爵宇钻怎么样 宇钻摩托车是什么牌子 豪爵铃木宇钻 2018年豪爵125宇钻多少钱一台 陈宇阳 高宇阳 宇阳厨房设备 宇顺 st宇顺 宇顺电子股吧 宇顺电子 002289 宇龙 宇龙自动化 裕隆 yulong 守住秘密真难 守住秘密真很难 街亭谁也守不住 耐得住寂寞才能守得住繁华 耐得住孤独守得住繁华 守住秘密很难 守得住寂寞 守住秘密 守不住爱恋 耐得住寂莫守得住繁华 守住寂寞 守活寡的女熬不住