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
  • asp之家 网络编程 m.aspxhome.com