python上下文管理的使用场景实例讲解


Posted in Python onMarch 03, 2021

1、上下文管理的使用场景

凡是要在代码块前后插入代码的场景,这点和装饰器类似。

资源管理类:申请和回收,包括打开文件、网络连接、数据库连接等;

权限验证。

2、实例

>>> with Context():
...   raise Exception # 直接抛出异常
...
enter context
exit context
Traceback (most recent call last):
 File "/usr/local/python3/lib/python3.6/site-packages/IPython/core/interactiveshell.py", line 2862, in run_code
  exec(code_obj, self.user_global_ns, self.user_ns)
 File "<ipython-input-4-63ba5aff5acc>", line 2, in <module>
  raise Exception
Exception

知识点扩展:

python上下文管理器异常问题解决方法

异常实例

如果我们需要对异常做特殊处理,就可以在这个方法中实现自定义逻辑。

之所以 with 能够自动关闭文件资源,就是因为内置的文件对象实现了上下文管理器协议,这个文件对象的 __enter__ 方法返回了文件句柄,并且在 __exit__ 中实现了文件资源的关闭,另外,当 with 语法块内有异常发生时,会抛出异常给调用者。

class File:
 def __enter__(self):
 return file_obj
 def __exit__(self, exc_type, exc_value, exc_tb):
 # with 退出时释放文件资源
 file_obj.close()
 # 如果 with 内有异常发生 抛出异常
 if exc_type is not None:
  raise exception

在__exit__方法中处理异常实例扩展:

class File(object):
 def __init__(self, file_name, method):
 self.file_obj = open(file_name, method)
 def __enter__(self):
 return self.file_obj
 def __exit__(self, type, value, traceback):
 print("Exception has been handled")
 self.file_obj.close()
 return True
 
with File('demo.txt', 'w') as opened_file:
 opened_file.undefined_function()
 
# Output: Exception has been handled

到此这篇关于python上下文管理的使用场景实例讲解的文章就介绍到这了,更多相关python上下文管理的使用场景内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python中__call__内置函数用法实例
Jun 04 Python
图文讲解选择排序算法的原理及在Python中的实现
May 04 Python
python matlibplot绘制多条曲线图
Feb 19 Python
python+Splinter实现12306抢票功能
Sep 25 Python
python中类的属性和方法介绍
Nov 27 Python
解决Django中修改js css文件但浏览器无法及时与之改变的问题
Aug 31 Python
python+OpenCV实现车牌号码识别
Nov 08 Python
基于Python实现扑克牌面试题
Dec 11 Python
Python使用monkey.patch_all()解决协程阻塞问题
Apr 15 Python
Python数据分析之pandas函数详解
Apr 21 Python
Python3 类型标注支持操作
Jun 02 Python
Python可视化学习之matplotlib内置单颜色
Feb 24 Python
pip install命令安装扩展库整理
Mar 02 #Python
python实现杨辉三角的几种方法代码实例
Mar 02 #Python
python爬虫破解字体加密案例详解
Mar 02 #Python
python包的导入方式总结
Mar 02 #Python
numpy实现RNN原理实现
Mar 02 #Python
解决tensorflow模型压缩的问题_踩坑无数,总算搞定
Mar 02 #Python
python Protobuf定义消息类型知识点讲解
Mar 02 #Python
You might like
PHP strtok()函数的优点分析
2010/03/02 PHP
PHP里的中文变量说明
2011/07/23 PHP
关于url地址传参数时字符串有回车造成页面脚本赋值失败的解决方法
2013/06/28 PHP
PHP使用CURL获取302跳转后的地址实例
2014/05/04 PHP
浅谈PHP解析URL函数parse_url和parse_str
2014/11/11 PHP
PHP计算百度地图两个GPS坐标之间距离的方法
2015/01/09 PHP
最新制作ThinkPHP3.2.3完全开发手册
2015/11/23 PHP
PHP实现对二维数组某个键排序的方法
2016/09/14 PHP
js 鼠标点击事件及其它捕获
2009/06/04 Javascript
jQuery帮助之CSS尺寸(五)outerHeight、outerWidth
2009/11/14 Javascript
javascript中的注释使用与注意事项小结
2011/09/20 Javascript
js获得鼠标的坐标值的方法
2013/03/13 Javascript
jquery序列化表单以及回调函数的使用示例
2014/07/02 Javascript
基于AngularJS+HTML+Groovy实现登录功能
2016/02/17 Javascript
关于javascript事件响应的基础语法总结(必看篇)
2016/12/26 Javascript
JS中解决谷歌浏览器记住密码输入框颜色改变功能
2017/02/13 Javascript
Express之get,pos请求参数的获取
2017/05/02 Javascript
angular中不同的组件间传值与通信的方法
2017/11/04 Javascript
cdn模式下vue的基本用法详解
2018/10/07 Javascript
浅入深出Vue之自动化路由
2019/08/06 Javascript
Flutter 超实用简单菜单弹出框 PopupMenuButton功能
2019/08/06 Javascript
通过Kettle自定义jar包供javascript使用
2020/01/29 Javascript
[01:02]2014 DOTA2国际邀请赛中国区预选赛 现场抢先看
2014/05/22 DOTA
python遍历类中所有成员的方法
2015/03/18 Python
Python 获得13位unix时间戳的方法
2017/10/20 Python
python实现音乐播放器 python实现花框音乐盒子
2020/02/25 Python
Pycharm安装并配置jupyter notebook的实现
2020/05/18 Python
python 装饰器的实际作用有哪些
2020/09/07 Python
Amara美国站:英国高端家居礼品网站,世界各地的奢侈家具品牌
2017/07/26 全球购物
GANT英国官方网上商店:甘特衬衫
2018/02/06 全球购物
MCAKE蛋糕官方网站:一直都是巴黎的味道
2018/02/06 全球购物
捷克购买家具网站:JENA nábytek
2020/03/19 全球购物
群众路线对照检查材料思想汇报怎么写
2014/09/18 职场文书
2014年保卫工作总结
2014/12/05 职场文书
2014年小学辅导员工作总结
2014/12/23 职场文书
企业管理制度设计时要注意的几种“常见病”!
2019/04/19 职场文书