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编程中三条常用的技巧
May 11 Python
Python打包可执行文件的方法详解
Sep 19 Python
Python标准库06之子进程 (subprocess包) 详解
Dec 07 Python
Python常见异常分类与处理方法
Jun 04 Python
Python 实现使用dict 创建二维数据、DataFrame
Apr 13 Python
对PyTorch torch.stack的实例讲解
Jul 30 Python
在python中将list分段并保存为array类型的方法
Jul 15 Python
基于python3抓取pinpoint应用信息入库
Jan 08 Python
python学习将数据写入文件并保存方法
Jun 07 Python
Python tempfile模块生成临时文件和临时目录
Sep 30 Python
python实现图片,视频人脸识别(opencv版)
Nov 18 Python
用Python仅20行代码编写一个简单的端口扫描器
Apr 08 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生成静态页面教程
2012/01/10 PHP
ThinkPHP中Common/common.php文件常用函数功能分析
2016/05/20 PHP
thinkPHP引入类的方法详解
2016/12/08 PHP
PHP 实现base64编码文件上传出现问题详解
2020/09/01 PHP
JS中获取数据库中的值的方法
2013/07/14 Javascript
javascript实现页面刷新时自动清空表单并选中的方法
2015/07/18 Javascript
jQuery弹层插件jquery.fancybox.js用法实例
2016/01/22 Javascript
深入学习Bootstrap表单
2016/12/13 Javascript
常用JS图片滚动(无缝、平滑、上下左右滚动)代码大全(推荐)
2016/12/20 Javascript
Reactjs实现通用分页组件的实例代码
2017/01/19 Javascript
JavaScript实现的浏览器下载文件的方法
2017/08/09 Javascript
使用D3.js制作图表详解
2017/08/13 Javascript
node.js多个异步过程中判断执行是否完成的解决方案
2017/12/10 Javascript
element-ui 表格数据时间格式化的方法
2018/08/24 Javascript
Nodejs模块的调用操作实例分析
2018/12/25 NodeJs
angular 用Observable实现异步调用的方法
2018/12/27 Javascript
webpack proxy 使用(代理的使用)
2020/01/10 Javascript
通过实例解析JavaScript for in及for of区别
2020/06/15 Javascript
jquery实现上传图片功能
2020/06/29 jQuery
js+audio实现音乐播放器
2020/09/13 Javascript
Python实现改变与矩形橡胶的线条的颜色代码示例
2018/01/05 Python
Python实现动态图解析、合成与倒放
2018/01/18 Python
Django uwsgi Nginx 的生产环境部署详解
2019/02/02 Python
解决Python对齐文本字符串问题
2019/08/28 Python
利用python读取YUV文件 转RGB 8bit/10bit通用
2019/12/09 Python
python 实现按对象传值
2019/12/26 Python
pytorch实现focal loss的两种方式小结
2020/01/02 Python
如何在Python 游戏中模拟引力
2020/03/27 Python
纯css3显示隐藏一个div特效的具体实现
2014/02/10 HTML / CSS
售后服务科岗位职责范文
2013/11/13 职场文书
好的演讲稿开场白
2013/12/30 职场文书
课外科技活动总结
2014/08/27 职场文书
纪念九一八事变演讲稿:青少年应树立远大理想
2014/09/14 职场文书
买房协议书范本
2014/10/23 职场文书
2015年团队工作总结范文
2015/05/04 职场文书
小学生作文写作技巧100例,非常实用!
2019/07/08 职场文书