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生成随机数的方法
Jan 14 Python
Python中__name__的使用实例
Apr 14 Python
Python中用于计算对数的log()方法
May 15 Python
深入解析Python中的集合类型操作符
Aug 19 Python
理解Python中的With语句
Mar 18 Python
Python画图学习入门教程
Jul 01 Python
详解python中的文件与目录操作
Jul 11 Python
python实现冒泡排序算法的两种方法
Mar 10 Python
Python字典的核心底层原理讲解
Jan 24 Python
简单了解Python3 bytes和str类型的区别和联系
Dec 19 Python
pycharm运行程序时看不到任何结果显示的解决
Feb 21 Python
在spyder IPython console中,运行代码加入参数的实例
Apr 20 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
基于mysql的论坛(5)
2006/10/09 PHP
收藏的一个php小偷的核心程序
2007/04/09 PHP
PHP setcookie指定domain参数后,在IE下设置cookie失效的解决方法
2011/09/09 PHP
[原创]php使用strpos判断字符串中数字类型子字符串出错的解决方法
2017/04/01 PHP
PHP文字转图片功能原理与实现方法分析
2017/08/31 PHP
JavaScript中使用replace结合正则实现replaceAll的效果
2010/06/04 Javascript
40款非常棒的jQuery 插件和制作教程(系列一)
2011/10/26 Javascript
JQuery中判断一个元素下面是否有内容或者有某个标签的判断代码
2012/02/02 Javascript
jquery实现漂浮在网页右侧的qq在线客服插件示例
2013/05/13 Javascript
javascript基于DOM实现省市级联下拉框的方法
2015/05/14 Javascript
jQuery遍历DOM的父级元素、子级元素和同级元素的方法总结
2016/07/07 Javascript
VUE JS 使用组件实现双向绑定的示例代码
2017/01/10 Javascript
微信小程序实现图片压缩功能
2018/01/26 Javascript
js canvas实现红包照片效果
2018/08/21 Javascript
在vue.js中使用JSZip实现在前端解压文件的方法
2018/09/05 Javascript
微信小程序登录按钮遮罩浮层效果的实现方法
2018/12/16 Javascript
vue源码nextTick使用及原理解析
2019/08/13 Javascript
Vue+Element自定义纵向表格表头教程
2020/10/26 Javascript
python数据处理实战(必看篇)
2017/06/11 Python
Python中标准库OS的常用方法总结大全
2017/07/19 Python
python中模块查找的原理与方法详解
2017/08/11 Python
python3.6数独问题的解决
2019/01/21 Python
详解python中index()、find()方法
2019/08/29 Python
Python字符串格式化常用手段及注意事项
2020/06/17 Python
Selenium关闭INFO:CONSOLE提示的解决
2020/12/07 Python
CSS3实现闪烁动画效果的方法
2015/02/09 HTML / CSS
HTML5 Web Workers之网站也能多线程的实现
2013/04/24 HTML / CSS
大学生最新职业生涯规划书范文
2014/01/12 职场文书
酒店营销策划方案
2014/02/07 职场文书
更夫岗位责任制
2014/02/11 职场文书
医学生毕业自我鉴定
2014/03/26 职场文书
暑期培训班招生方案
2014/08/26 职场文书
地道战观后感400字
2015/06/04 职场文书
2015暑假打工实践报告
2015/07/13 职场文书
Nginx 过滤静态资源文件的访问日志的实现
2021/03/31 Servers
Mysql分库分表之后主键处理的几种方法
2022/02/15 MySQL