with上下文管理

class person:def __init__(self,name):self .name = name def __enter__(self):print('这是with定义的对象进到了enter方法中执行操作')return selfdef __exit__(self,exc_type,exc_value,exc_tb):print('''with对象在enter中执行完毕之后会返回对象,这是对象就会走到with方法中去执行当中的代码,在没有报错的情况下,执行完毕之后,程序就会进入到exit方法中,然后完成关闭.这就是with方法不用手动关闭的原理.''')with person('小红') as p:print(p.name)

总结:

  • 程序在执行的时候
    1.进到enter方法中执行,返回值为实例化的对象
    2.返回对象之后,进入到with方法中去执行里面的代码
    3.当没有异常发生的时候,顺利执行完成之后,对象就会进入到exit方法中去执行里面的代码
class person:def __init__(self,name):self .name = name def __enter__(self):print('这是with定义的对象进到了enter方法中执行操作')return selfdef __exit__(self,exc_type,exc_value,exc_tb):print('''with对象在enter中执行完毕之后会返回对象,这是对象就会走到with方法中去执行当中的代码,在没有报错的情况下,执行完毕之后,程序就会进入到exit方法中,然后完成关闭.这就是with方法不用手动关闭的原理.''')with person('小红') as p:print(p.name)result = 1/0print ('程序发生异常')

总结:

当程序在with代码块中执行遇到异常,那么异常下面的代码就不会被执行,程序就会立即跳转到exit方法中去执行.

class person:def __init__(self,name):self .name = name def __enter__(self):print('这是with定义的对象进到了enter方法中执行操作')return selfdef __exit__(self,exc_type,exc_value,exc_tb):print('''with对象在enter中执行完毕之后会返回对象,这是对象就会走到with方法中去执行当中的代码,在没有报错的情况下,执行完毕之后,程序就会进入到exit方法中,然后完成关闭.这就是with方法不用手动关闭的原理.''')return Truewith person('小红') as p:print(p.name)result = 1/0print ('程序发生异常')print('当exit方法返回值为True时,with里面的代码块异常下面的不再执行,但是在with语句外的下面的代码还是正常执行')

总结:

当exit方法执行返回的结果为true时,异常就会被隐藏掉了,所以后面的代码还是会被执行

python with上下文管理相关推荐

  1. Python with上下文管理及自定义上下文管理

    Python with上下文管理及自定义上下文管理 一.上下文管理器 上下文管理器是对Context Manager的翻译 ,上下文是 context 直译的叫法,在程序中用来表示代码执行过程中所处的 ...

  2. python的上下文管理

    说道上下文管理首先想到的就是这个: class MyResource:def __enter__(self):print("查询开始")return selfdef __exit_ ...

  3. python上下文管理关键字_理解 Python 的上下文管理器

    任何 Python 教程,必然会讲解如何打开一个文件.而任何提到打开文件的地方,都必然会推荐用 with 来操作文件的读写.比如说这里有一篇非常优秀的教程,文中提到在 Python 中,文件读写是通过 ...

  4. python的上下文管理用哪个关键字_正确理解python中的关键字“with”与上下文管理器...

    正确理解python中的关键字"with"与上下文管理器 来源:中文源码网    浏览: 次    日期:2018年9月2日 [下载文档:  正确理解python中的关键字&quo ...

  5. python进入上下文管理器_浅谈Python中with(上下文管理器)的用法

    例子一 首先来看一段代码: classFoo(object):def __init__(self):print('实例化一个对象')def __enter__(self):print('进入')def ...

  6. Python 上下文管理器和 with 语句

    1. 上下文管理器概念 什么是 Python 的上下文管理器(Context Managers)呢? ​ 含有 __enter__ 和 __exit__ 方法的对象就是.上下文管理器存在的目的是管理 ...

  7. python意外退出_有趣的Python上下文管理器

    阅读耗时:9分钟 目录 编写自定义上下文管理器 从生成器到上下文管理器 将上下文管理器编写为装饰器 嵌套式上下文管理器 组合式上下文管理器 利用用上下文管理器创建SQLAlchemy session ...

  8. python 计时器_Python上下文管理器的魔力

    点击关注我哦 一篇文章带你了解Python上下文管理器的魔力 小编将为您准备一份很棒的Python上下文管理器使用指南,这将使您的代码更具可读性和可靠性,降低您的错误发生率. 资源管理器是我们在任何编 ...

  9. Python上下文管理器的魔力

    点击关注我哦 一篇文章带你了解Python上下文管理器的魔力 小编将为您准备一份很棒的Python上下文管理器使用指南,这将使您的代码更具可读性和可靠性,降低您的错误发生率. 资源管理器是我们在任何编 ...

最新文章

  1. Quartz-DateBuilder解读
  2. 产品规划,要考虑哪些方面?
  3. 常见程序设计及编程开发问题解答
  4. 如何使用Dependabot保持环境最新
  5. 使用POI 读取 Excel 文件,读取手机号码 变成 1.3471022771E10
  6. 一、cadence ic 5141 ——软件下载地址以及常见错误
  7. LaTeX编写IEEE会议论文字体报错、且参考文献中会议/期刊的名字没有斜体的问题解决
  8. 猴子摘桃c语言程序,猴子摘桃c语言
  9. Linux固态硬盘 设置写入缓存,写入缓存策略怎么打开让SSD提高速度
  10. PSENet(Shape Robust Text Detection with Progressive Scale Expansion Network)论文详解
  11. 微信网页第三方登陆 获取用户信息 代码
  12. 最新微信hook二次开发c#源码介绍
  13. 个人如何搭建博客网站
  14. PostgreSQL t_bits计算方法
  15. Windows睡眠,CPU风扇仍然运转的问题
  16. java开发工程师面试自我介绍_Java程序员面试如何自我介绍HR这一关
  17. 第五天 01-ftp服务器使用及arp欺骗获取ftp账号密码
  18. 2022上半年系统集成项目管理师客观题参考答题解析(1)
  19. 股妖APP也妖 -- 与暴风魔镜相关
  20. 晨山资本王志飏:万物智联时代,智能企业的创新路径

热门文章

  1. 2022-2028年中国乳制品行业市场需求预测与投资战略规划分析报告
  2. 2022-2028年中国半导体用环氧塑封料(EMC)行业市场全景调查及投资前景分析报告
  3. 【微服务架构】SpringCloud之路由网关(zuul)
  4. 我爱自然语言处理bert ner chinese
  5. 本机无法访问虚拟机上的nignx
  6. 预测汽车级Linux专业技术的需求
  7. mysql sql w3cschool_SQL复习(w3school)笔记
  8. java jdk 环境变量配置(window 10 系统)
  9. display:inline-block 的使用
  10. scala函数式编程(二) scala基础语法介绍