python上下文管理的使用场景实例讲解
2021-03-05 04:06
1076 查看
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使用xmlrpc实例讲解
- python使用xmlrpc实例讲解
- python进程管理工具supervisor使用实例
- Python 使用PIL中的resize进行缩放的实例讲解
- Linux管理工作,实例讲解工作中使用ssh证书登录的实际流程,讲解ssh证书登录的配置原理,基于配置原理,解决实际工作中,windows下使用SecureCRT证书登录的各种问题,以及实现hadoo
- Python使用pandas处理CSV文件的实例讲解
- Python多版本管理软件pyenv的安装应用及pip的使用讲解
- 实例讲解Python设计模式编程之工厂方法模式的使用
- python爬虫 正则表达式使用技巧及爬取个人博客的实例讲解
- 使用Python读取二进制文件的实例讲解
- 干货!干货!实例讲解使用Python给头像戴上圣诞帽的图像操作过程
- Python使用urllib2获取网络资源实例讲解
- Python多版本管理软件pyenv的安装应用及pip的使用讲解
- 二种python发送邮件实例讲解(python发邮件附件可以使用email模块实现)
- 实例讲解Python设计模式编程之工厂方法模式的使用
- 以一个投票程序的实例来讲解Python的Django框架使用
- python使用多线程实例讲解
- 以一个投票程序的实例来讲解Python的Django框架使用
- 二种python发送邮件实例讲解(python发邮件附件可以使用email模块实现)
- python使用xmlrpc实例讲解