一、上下文管理协议

<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之上下文管理协议相关推荐

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

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

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

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

  3. python语言使用什么语句实现上下文管理协议_Python 上下文管理器

    上下文管理器 在使用Python编程中,可以会经常碰到这种情况:有一个特殊的语句块,在执行这个语句块之前需要先执行一些准备动作:当语句块执行完成后,需要继续执行一些收尾动作. 例如:当需要操作文件或数 ...

  4. Python学习之路33-上下文管理器和else块

    <流畅的Python>笔记. 本篇主要讨论Python用户常忽略掉的一些流程控制特性,包括上下文管理器和else块.内容包括else与非if关键字的搭配:Python中的上下文管理器,如何 ...

  5. python 面向对象编程 之 上下文管理协议

    with open('path', 'r' ,encoding='utf-8') as f: 代码块 上述就叫做上线文管理协议,即with语句,为了让一个对象兼容with语句,必须在这个对象的类中声明 ...

  6. python上下文管理协议_Python3基础-上下文管理协议

    一.上下文管理协议 操作文件对象的时候可以这样写 with open('a.txt','r+') asf:'代码块' 上述叫做上下文管理协议,即with语句,为了让对象兼容with语句,必须在这个对象 ...

  7. python内存管理和释放_《python解释器源码剖析》第17章--python的内存管理与垃圾回收...

    17.0 序 内存管理,对于python这样的动态语言是至关重要的一部分,它在很大程度上决定了python的执行效率,因为在python的运行中会创建和销毁大量的对象,这些都设计内存的管理.同理pyt ...

  8. Python之包管理工具

    在Python环境中已经有很多成熟的包,可以通过安装这些包来扩展我们的程序. 例如,很多时候Python开发人员都会去PyPI网站去查找自己想要使用的包,然后进行安装.PyPI ( Python Pa ...

  9. ubuntu安装python下载包_Ubuntu安装Python的包管理工具Pip

    CSDNGitHubUbuntu安装Python的包管理工具PipAderXCoding/system/tools/pip 本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行 ...

最新文章

  1. (每日一题)CF1139D Steps to One 2021年天梯赛 L3-3 可怜的简单题(期望,莫比乌斯反演,杜教筛)
  2. JavaScript中的call、apply、bind深入理解
  3. Tarjan的求双连通分量算法
  4. CentOS允许某一端口接受外部链接
  5. C / C++ const 的区别和使用
  6. wordpress 外部数据接口_使用接口方式获取WordPress用户信息的方法
  7. 数据结构之堆栈与队列
  8. linux那些事之page fault(AMD64架构)(user space)(2)
  9. android-HttpClient上传信息(包括图片)到服务端
  10. 徕卡静态转换rinex软件_[摄影]旅游伴侣———徕卡SL2
  11. Scala中的“=”和“-”
  12. vue项目基本环境的配置与初始化
  13. 架构系列---发号器(全局唯一ID生成器)系统设计方案和思路
  14. Unity3D关于VR的Demo(一)
  15. RAM Type——Register file(寄存器堆)
  16. jquerymobile-16 select menu
  17. S型速度曲线_博图+变频器+三相异步电机(以堆垛机控制系统举例)
  18. 小米手机与计算机如何连接网络连接,小米手机怎么通过电脑上网如何将手机与电脑相连...
  19. 快速排序——寻找数组第K大数(由浅入深,四种方法对比讲解!)
  20. 元宵节一起来炸汤(chu)圆(fang)

热门文章

  1. “staticMetaObject”: 不是“****”的成员
  2. 第六课:不要为金钱而工作
  3. streamsets rest api 转换 graphql
  4. Java学习之模拟纸牌游戏,List的ArrayList,Map的HashMap,重写Collections类的sort方法对指定类进行通过特定属性排序,输入异常处理等的学习...
  5. 逻辑回归的MATLAB实现(二分类问题)
  6. 45. ExtJS ComboBox 下拉列表详细用法
  7. 搜索引擎优化网页设计:最佳实践
  8. 质保、保修、包修:含义不同
  9. window7下nginx配置文件详解
  10. android Math的使用