Python之上下文管理协议
一、上下文管理协议
<1>常规操作3步open:
1.f = open('a.txt')
2.对文件的操作
3.f.close()
上边两种操作 第二种操作因为打开文件之后必须关闭,不关闭占用内存的资源
而上下文管理协议就不会,
内存采用回收机制自动的去把对象清理掉
好处就是可以在exit方法中自动释放资源
<2>with
with open('a.txt') as f:
'代码块'
上述就是上下文管理协议 __enter__ __exit__
1 class Foo: 2 3 def __init__(self, name): 4 self.name = name 5 6 def __enter__(self): 7 print('执行enter方法') 8 return self 9 10 def __exit__(self, exc_type, exc_val, exc_tb): 11 print('执行exit方法') 12 print(exc_type) # <class 'NameError'> 13 print(exc_val) # name 'aaaaaaaaa' is not defined 14 print(exc_tb) # <traceback object at 0x000001A2BAF90F08> 15 16 17 with Foo('a.txt') as f: # 触发enter 18 print(f) 19 # print(aaaaaaaaa) # 报错直接触发exit 20 print(f.name) # 代码块处理完毕之后 触发exit 21 22 print('1111111111111')
转载于:https://www.cnblogs.com/Alexephor/p/11219031.html
Python之上下文管理协议相关推荐
- python进入上下文管理器_浅谈Python中with(上下文管理器)的用法
例子一 首先来看一段代码: classFoo(object):def __init__(self):print('实例化一个对象')def __enter__(self):print('进入')def ...
- python语言使用什么语句实现上下文管理协议_Python with语句上下文管理器两种实现方法分析...
本文实例讲述了Python with语句上下文管理器.分享给大家供大家参考,具体如下: 在编程中会经常碰到这种情况:有一个特殊的语句块,在执行这个语句块之前需要先执行一些准备动作:当语句块执行完成后, ...
- python语言使用什么语句实现上下文管理协议_Python 上下文管理器
上下文管理器 在使用Python编程中,可以会经常碰到这种情况:有一个特殊的语句块,在执行这个语句块之前需要先执行一些准备动作:当语句块执行完成后,需要继续执行一些收尾动作. 例如:当需要操作文件或数 ...
- Python学习之路33-上下文管理器和else块
<流畅的Python>笔记. 本篇主要讨论Python用户常忽略掉的一些流程控制特性,包括上下文管理器和else块.内容包括else与非if关键字的搭配:Python中的上下文管理器,如何 ...
- python 面向对象编程 之 上下文管理协议
with open('path', 'r' ,encoding='utf-8') as f: 代码块 上述就叫做上线文管理协议,即with语句,为了让一个对象兼容with语句,必须在这个对象的类中声明 ...
- python上下文管理协议_Python3基础-上下文管理协议
一.上下文管理协议 操作文件对象的时候可以这样写 with open('a.txt','r+') asf:'代码块' 上述叫做上下文管理协议,即with语句,为了让对象兼容with语句,必须在这个对象 ...
- python内存管理和释放_《python解释器源码剖析》第17章--python的内存管理与垃圾回收...
17.0 序 内存管理,对于python这样的动态语言是至关重要的一部分,它在很大程度上决定了python的执行效率,因为在python的运行中会创建和销毁大量的对象,这些都设计内存的管理.同理pyt ...
- Python之包管理工具
在Python环境中已经有很多成熟的包,可以通过安装这些包来扩展我们的程序. 例如,很多时候Python开发人员都会去PyPI网站去查找自己想要使用的包,然后进行安装.PyPI ( Python Pa ...
- ubuntu安装python下载包_Ubuntu安装Python的包管理工具Pip
CSDNGitHubUbuntu安装Python的包管理工具PipAderXCoding/system/tools/pip 本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行 ...
最新文章
- (每日一题)CF1139D Steps to One 2021年天梯赛 L3-3 可怜的简单题(期望,莫比乌斯反演,杜教筛)
- JavaScript中的call、apply、bind深入理解
- Tarjan的求双连通分量算法
- CentOS允许某一端口接受外部链接
- C / C++ const 的区别和使用
- wordpress 外部数据接口_使用接口方式获取WordPress用户信息的方法
- 数据结构之堆栈与队列
- linux那些事之page fault(AMD64架构)(user space)(2)
- android-HttpClient上传信息(包括图片)到服务端
- 徕卡静态转换rinex软件_[摄影]旅游伴侣———徕卡SL2
- Scala中的“=”和“-”
- vue项目基本环境的配置与初始化
- 架构系列---发号器(全局唯一ID生成器)系统设计方案和思路
- Unity3D关于VR的Demo(一)
- RAM Type——Register file(寄存器堆)
- jquerymobile-16 select menu
- S型速度曲线_博图+变频器+三相异步电机(以堆垛机控制系统举例)
- 小米手机与计算机如何连接网络连接,小米手机怎么通过电脑上网如何将手机与电脑相连...
- 快速排序——寻找数组第K大数(由浅入深,四种方法对比讲解!)
- 元宵节一起来炸汤(chu)圆(fang)
热门文章
- “staticMetaObject”: 不是“****”的成员
- 第六课:不要为金钱而工作
- streamsets rest api 转换 graphql
- Java学习之模拟纸牌游戏,List的ArrayList,Map的HashMap,重写Collections类的sort方法对指定类进行通过特定属性排序,输入异常处理等的学习...
- 逻辑回归的MATLAB实现(二分类问题)
- 45. ExtJS ComboBox 下拉列表详细用法
- 搜索引擎优化网页设计:最佳实践
- 质保、保修、包修:含义不同
- window7下nginx配置文件详解
- android Math的使用