python-->with-上下文管理器
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-上下文管理器相关推荐
- python上下文管理关键字_理解 Python 的上下文管理器
任何 Python 教程,必然会讲解如何打开一个文件.而任何提到打开文件的地方,都必然会推荐用 with 来操作文件的读写.比如说这里有一篇非常优秀的教程,文中提到在 Python 中,文件读写是通过 ...
- python进入上下文管理器_浅谈Python中with(上下文管理器)的用法
例子一 首先来看一段代码: classFoo(object):def __init__(self):print('实例化一个对象')def __enter__(self):print('进入')def ...
- Python 上下文管理器和 with 语句
1. 上下文管理器概念 什么是 Python 的上下文管理器(Context Managers)呢? 含有 __enter__ 和 __exit__ 方法的对象就是.上下文管理器存在的目的是管理 ...
- python意外退出_有趣的Python上下文管理器
阅读耗时:9分钟 目录 编写自定义上下文管理器 从生成器到上下文管理器 将上下文管理器编写为装饰器 嵌套式上下文管理器 组合式上下文管理器 利用用上下文管理器创建SQLAlchemy session ...
- python 计时器_Python上下文管理器的魔力
点击关注我哦 一篇文章带你了解Python上下文管理器的魔力 小编将为您准备一份很棒的Python上下文管理器使用指南,这将使您的代码更具可读性和可靠性,降低您的错误发生率. 资源管理器是我们在任何编 ...
- Python上下文管理器的魔力
点击关注我哦 一篇文章带你了解Python上下文管理器的魔力 小编将为您准备一份很棒的Python上下文管理器使用指南,这将使您的代码更具可读性和可靠性,降低您的错误发生率. 资源管理器是我们在任何编 ...
- python笔记2(函数 面向对象 文件编程 上下文管理器)
记录python听课笔记 文章目录 记录python听课笔记 一,函数 1.介绍python里的函数 2.用户自定义函数 3.变量的作用域 4.参数的传递 5.参数的默认值 6.向函数内部批量传递数据 ...
- python语言使用什么语句实现上下文管理协议_Python 技巧探究:上下文管理器和with语句...
一:前言 Python 里面的 with 语句是被认为是晦涩难懂的特征之一,但是当你窥视它的内部你就会发现这里面并没有什么魔法.事实上它可以帮助我们写一些整洁和可读性高的代码. 那么 with 语句适 ...
- python上下文管理器with
python之上下文管理器--with语句详解_我愿做一个聆听者,以学习为伴!-CSDN博客_python上下文管理语句为
- python语言使用什么语句实现上下文管理协议_Python with语句上下文管理器两种实现方法分析...
本文实例讲述了Python with语句上下文管理器.分享给大家供大家参考,具体如下: 在编程中会经常碰到这种情况:有一个特殊的语句块,在执行这个语句块之前需要先执行一些准备动作:当语句块执行完成后, ...
最新文章
- linux 内存居高不下,Linux 内存占用总是很高为何依旧很流畅?
- 不敢回国的硅谷程序员们!
- linux下使用extundelete恢复ext3/ext4分区数据
- marked Options
- C# 字符、字符串过滤,只能输入数字、中文、英文、大写、小写(转)
- AI「抄」代码无罪?GitHub Copilot拿用户的开源代码改一改就去挣钱!
- 从流程的自动化中获得最大价值的10种方式
- Android——DDMS简单介绍
- python字典中的键是什么_在python字典中作为键的对象
- php判断文本不存在,php 怎么判断文件存不存在
- zabbix自定义用户key
- java求职简历建议
- 小程序图片src本地服务器路径,微信小程序 图片加载(本地,网路)实例详解...
- 小米盒子升级android tv后不能安装第三方软件下载,小米电视,小米盒子无法安装第三方应用,怎么办?...
- NX/UG二次开发—CAM—刀轨转曲线(支持圆弧和直线)
- kdj买卖指标公式源码_KDJ胜率极高的买入机会,死记一个指标(附KDJ背离指标源码)...
- java app远程调取摄像头_Java调用计算机摄像头照相(Rest API控制,方便远程拍照)...
- python中获取中位数的两种方法
- 鸿蒙三千法则排名,三千法则名称大全_十大最强法则
- DM368开发 -- 再论 UBL