1、概念

含有__enter__和__exit__方法的对象就是上下文管理器

2、语法

whith 上下文管理器:代码块

3、使用场景

只要创建/打开用完需要关闭时就可以用with实现,例如socket、文件读写、数据库连接等

4、第一种实现方式

__enter__() 方法返回资源对象,__exit__() 方法处理一些清除工作。

class WriteIn(object):def __init__(self, filePath, mode):self.filePath = filePathself.mode = modedef __enter__(self):self.f = open(self.filePath, self.mode)return self.fdef __exit__(self, *args):self.f.close()# 调用
with WriteIn("./jiekema.txt", "w") as f:f.write("我是杰克马")

通过@contextmanager装饰器实现上下文管理器

python提供的@contextmanager 装饰器,通过 yield 将函数分割成两部分,yield 之前的语句在 __enter__ 方法中执行,yield 之后的语句在 __exit__ 方法中执行。紧跟在 yield 后面的值是函数的返回值。

from contextlib import contextmanager@contextmanager
def my_open(path, mode):f = open(path, mode)yield ff.close()# 调用
with my_open('out.txt', 'w') as f:f.write("hello_world")

第二段代码等同于第一段代码

class WriteIn(object):def __init__(self, filePath, data):self.filePath = filePathself.data = datadef writeIn(self):f = open(self.filePath, "w")try:f.write(self.data)except IOError:print("error")finally:f.close()w = WriteIn("./a.txt", "哈哈")
w.writeIn()class WriteIn(object):def __init__(self, filePath, data):self.filePath = filePathself.data = datadef writeIn(self):with open(self.filePath, "w") as f:f.write(self.data)w = WriteIn("./a.txt", "哈哈")
w.writeIn()

python-->with-上下文管理器相关推荐

  1. python上下文管理关键字_理解 Python 的上下文管理器

    任何 Python 教程,必然会讲解如何打开一个文件.而任何提到打开文件的地方,都必然会推荐用 with 来操作文件的读写.比如说这里有一篇非常优秀的教程,文中提到在 Python 中,文件读写是通过 ...

  2. python进入上下文管理器_浅谈Python中with(上下文管理器)的用法

    例子一 首先来看一段代码: classFoo(object):def __init__(self):print('实例化一个对象')def __enter__(self):print('进入')def ...

  3. Python 上下文管理器和 with 语句

    1. 上下文管理器概念 什么是 Python 的上下文管理器(Context Managers)呢? ​ 含有 __enter__ 和 __exit__ 方法的对象就是.上下文管理器存在的目的是管理 ...

  4. python意外退出_有趣的Python上下文管理器

    阅读耗时:9分钟 目录 编写自定义上下文管理器 从生成器到上下文管理器 将上下文管理器编写为装饰器 嵌套式上下文管理器 组合式上下文管理器 利用用上下文管理器创建SQLAlchemy session ...

  5. python 计时器_Python上下文管理器的魔力

    点击关注我哦 一篇文章带你了解Python上下文管理器的魔力 小编将为您准备一份很棒的Python上下文管理器使用指南,这将使您的代码更具可读性和可靠性,降低您的错误发生率. 资源管理器是我们在任何编 ...

  6. Python上下文管理器的魔力

    点击关注我哦 一篇文章带你了解Python上下文管理器的魔力 小编将为您准备一份很棒的Python上下文管理器使用指南,这将使您的代码更具可读性和可靠性,降低您的错误发生率. 资源管理器是我们在任何编 ...

  7. python笔记2(函数 面向对象 文件编程 上下文管理器)

    记录python听课笔记 文章目录 记录python听课笔记 一,函数 1.介绍python里的函数 2.用户自定义函数 3.变量的作用域 4.参数的传递 5.参数的默认值 6.向函数内部批量传递数据 ...

  8. python语言使用什么语句实现上下文管理协议_Python 技巧探究:上下文管理器和with语句...

    一:前言 Python 里面的 with 语句是被认为是晦涩难懂的特征之一,但是当你窥视它的内部你就会发现这里面并没有什么魔法.事实上它可以帮助我们写一些整洁和可读性高的代码. 那么 with 语句适 ...

  9. python上下文管理器with

    python之上下文管理器--with语句详解_我愿做一个聆听者,以学习为伴!-CSDN博客_python上下文管理语句为

  10. python语言使用什么语句实现上下文管理协议_Python with语句上下文管理器两种实现方法分析...

    本文实例讲述了Python with语句上下文管理器.分享给大家供大家参考,具体如下: 在编程中会经常碰到这种情况:有一个特殊的语句块,在执行这个语句块之前需要先执行一些准备动作:当语句块执行完成后, ...

最新文章

  1. linux 内存居高不下,Linux 内存占用总是很高为何依旧很流畅?
  2. 不敢回国的硅谷程序员们!
  3. linux下使用extundelete恢复ext3/ext4分区数据
  4. marked Options
  5. C# 字符、字符串过滤,只能输入数字、中文、英文、大写、小写(转)
  6. AI「抄」代码无罪?GitHub Copilot拿用户的开源代码改一改就去挣钱!
  7. 从流程的自动化中获得最大价值的10种方式
  8. Android——DDMS简单介绍
  9. python字典中的键是什么_在python字典中作为键的对象
  10. php判断文本不存在,php 怎么判断文件存不存在
  11. zabbix自定义用户key
  12. java求职简历建议
  13. 小程序图片src本地服务器路径,微信小程序 图片加载(本地,网路)实例详解...
  14. 小米盒子升级android tv后不能安装第三方软件下载,小米电视,小米盒子无法安装第三方应用,怎么办?...
  15. NX/UG二次开发—CAM—刀轨转曲线(支持圆弧和直线)
  16. kdj买卖指标公式源码_KDJ胜率极高的买入机会,死记一个指标(附KDJ背离指标源码)...
  17. java app远程调取摄像头_Java调用计算机摄像头照相(Rest API控制,方便远程拍照)...
  18. python中获取中位数的两种方法
  19. 鸿蒙三千法则排名,三千法则名称大全_十大最强法则
  20. DM368开发 -- 再论 UBL

热门文章

  1. 数字游戏 -- 寻找缺失的数字
  2. 【游戏客户端】剧情系统
  3. 英雄对决服务器未响应,lol点开始游戏没反应怎么办 完整解决办法一览
  4. 教你这么理解 『假脱机打印机系统』
  5. 6、Spring事务配置上篇
  6. 超简单禁止迅雷下载!(分析+方法)
  7. 昆明理工大学计算机学院李博,昆明理工大学
  8. 注解的写法格式与作用
  9. Excel如何把同一列的内容拆分为两列?
  10. IE8 RC版 兼容模式的表格边框问题