Python contextlib模块使用示例
作者:junjie 时间:2023-08-08 16:34:23
看这个模块要先看with as的用法,最常用的方法就是打开一个文件:
with open(“filename”) as f:
f.read()
with可以调用一个上下文管理器,产生运行时的上下文环境。上下文管理器主要定义两个方法,__enter__,__exit__。__enter__返回上下文里操作的对象,如f。__exit__是销毁对象和异常处理。
contextlib模块对外有三个接口,
contextmanager装饰器,装饰的函数必须是一个生成器。然后返回一个函数,在函数调用的时候返回一个上下文管理器。
nested为了一次调用多个上下文管理器的时候用,将所有上下文管理器里的__enter__放到vars里,一次yield返回,然后unpack。就产生多个对象了。__exit__都放到exits列表里,在finally里统一调用,这些__exit__在调用上下文管理器产生异常时,如何处理。如果返回false,将会把异常继续抛出,返回true则不会抛出异常。
closing,这个用过,没想到的是竟然是个类,而不是个函数。就是把有close方法却没有__exit__方法的对象变成一个上下文管理器。代码很简单:
class closing(object):
def __init__(self, thing):
self.thing = thing
def __enter__(self):
return self.thing
def __exit__(self, *exc_info):
self.thing.close()
标签:Python,contextlib,模块
0
投稿
猜你喜欢
python pygame实现五子棋小游戏
2021-10-31 13:39:23
PyQt5实现画布小程序
2022-03-02 07:37:46
深度剖析Golang中的数组,字符串和切片
2024-02-17 08:53:13
firefox扩展插件制作方法
2007-10-12 13:50:00
Python Web框架Flask中使用新浪SAE云存储实例
2022-11-03 06:27:16
如何使用Python Matplotlib绘制条形图
2023-09-21 04:41:46
golang连接MongoDB数据库及数据库操作指南
2024-01-26 18:14:29
Python 保存矩阵为Excel的实现方法
2022-07-23 07:05:00
大容量csv快速内导入sqlserver的解决方法(推荐)
2024-01-13 00:44:12
Select下拉列表控件美化
2008-11-12 12:55:00
基于Node.js实现nodemailer邮件发送
2024-05-03 15:36:40
详解Vue内部怎样处理props选项的多种写法
2024-05-03 15:10:39
Mysql中的排序规则utf8_unicode_ci、utf8_general_ci的区别总结
2024-01-13 14:39:02
Python自动化办公之Word文档的创建与生成
2022-06-16 17:49:43
详解DeBug Python神级工具PySnooper
2022-12-14 15:44:31
python pyecharts库的用法大全
2021-04-21 13:48:05
对python数据切割归并算法的实例讲解
2023-02-10 05:32:08
MySQL8.0.27安装过程中卡在Initializing Database中并报错的解决
2024-01-19 06:35:05
keras模型可视化,层可视化及kernel可视化实例
2021-02-20 00:45:25
详解python中的数据类型和控制流
2022-08-11 14:32:50