python语法31[with来自动释放对象]
一 with
python中的with的作用是自动释放对象,即使对象在使用的过程中有异常抛出。可以使用with的类型必须实现__enter__ __exit__。我的理解是=try...finally{},在finally中调用了释放函数。
[类似与CSharp中的using(){}关键字,用来自动确保调用对象的dispose()方法,即使对象有异常抛出。C#中可以使用using{}的对象必须已经实现了IDispose接口。]
with open("myfile.txt") as f:
for line in f:
print (line)
f.readline() #f is already clean up here, here will meet ValueError exception
TestWith()
在with语句执行完以后,f对象马上就被释放了。所以下面在调用f.readline()会出错。
二 with + try...except
既能让对象自动释放,又包含了异常捕获的功能。
def __init__(self, filename):
self.filename = filename
self.f = None
def __enter__(self):
try:
f = open(self.filename, 'r')
content = f.read()
return content
except IOError as e:
print (e)
def __exit__(self, type, value, traceback):
if self.f:
print ('type:%s, value:%s, traceback:%s' % (str(type), str(value), str(traceback)))
self.f.close()
def TestWithAndException():
with controlled_execution("myfile.txt") as thing:
if thing:
print(thing)
#TestWithAndException()
参考:
http://jianpx.javaeye.com/blog/505469
python语法31[with来自动释放对象]相关推荐
- Objective-C:ARC自动释放对象内存
ARC是cocoa系统帮你完成对象内存释放的引用计数机制 .h文件 1 // Person.h 2 // 01-ARC 3 // 4 // Created by ma c on 15/8/13. 5 ...
- python语法31[变量的作用域+global]
一 变量与作用域 变量的定义使用var=varvalue 1)如果函数中定义了同名的变量,则同名的全局变量被屏蔽,否则查找使用全局变量 def f1(): v1 = 'local' ...
- python语法31[函数]
一 简单函数和函数指针 def myadd(a,b): return a + b; print(myadd(3,2)); f = myadd; print(f(20,30)); 二 函数的默认 ...
- 自动释放池autoreleasepool
自动释放池是NSAutoreleasePool的实例,其中包含了收到autorelease消息的对象.当一个自动释放池自身被销毁(dealloc)时,它会给池中每一个对象发送一个release消息(如 ...
- 栈上对象的内存自动释放
1.栈上对象的内存自动释放 当栈上的对象生命周期结束时,会自动的调用对象的析构函数,并释放内存. 如果内存中有成员对象,继续调用成员对象的析构函数. class CC { public:CC() {} ...
- Python自动化二--jmeter分布式测试,抓包,python语法基本介绍
内容: 1.jmeter分布式测试 2.Jmeter在linux上运行 3.抓包 4.python 1.jmemter分布式测试-连接其它负载机 1)其它压力机上启动Jmeter.bat文件 2)在主 ...
- python语法详解大全_笔记:Python 语法要点汇总
Python 是一门解释型语言,无需编译和链接 Python 解释器 交互模式 脚本模式 源码编码 默认情况下,Python 源文件是 UTF-8 编码 指定源文件的字符编码 # -*- coding ...
- while循环中指针会自动释放吗_C++】C++常见面试题汇总_持续更新中...
1:指针(*).引用(&).解引用(*).取地址(&).的概念和区别 概念: 指针指向一块内存,指针保存的是内存的地址:引用是变量的别名,本质是引用该变量的地址. 解引用是取指针指向的 ...
- Python语法小白入门
目录 1.print函数与转义字符 01. 输出函数print() 02.转义字符与原字符 2.变量与数据类型 01.二进制与字符编码 02.Python中的标识符和保留字 03.变量的定义和使用 0 ...
最新文章
- mysql 二进制日志变化_mysql-二进制日志
- word 通配符_word通配符技巧:HR高效办公技巧应用
- 一键实现变老变年轻——Windows 10 下部署PaddleGAN,带你感受从年少到白头的浪漫
- Extended Twin Composite Number
- 一步一步理解Paxos算法
- linux FTP 批量下载文件
- 60+PPT 下载丨Oracle Open World 2019
- android 获取wifi的ip地址吗,Android获取有线和无线(wifi)的IP地址
- 牛客OI周赛4-提高组 C 战争(war)
- 删除排序数组中的重复数字 II · Remove Duplicates from Sorted Array II
- python 分段拟合(curve fit)
- 国产CAD_手机也能看CAD图纸了?国产软件助力CAD告别电脑时代!
- R语言回归及混合效应模型及贝叶斯实现
- EA游戏Battlefield 2(战地风云2) 单机地图简介
- 2017互联网月饼哪家强?腾讯、阿里、百度、网易等21家中秋月饼盘点
- Process Hacker 简单介绍
- hive的一些常用命令
- excel函数应用:如何写出IF函数多级嵌套公式
- SPA(单页面web应用)和MPA(多页面web应用)的区别
- 电报与二极管三极管的出现