博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python中的上下文管理器
阅读量:5911 次
发布时间:2019-06-19

本文共 1127 字,大约阅读时间需要 3 分钟。

刚刚看了vamei大神的上下文管理器博客,理解如下:

其实我自己经常用到上下文管理器,尤其是在打开文件的时候,如果自己比较懒,不想手工打上f.close(),使用上下文管理器就ok拉。

上下文管理器就是with ** as:

例如打开文件时,

>>> with open('test.txt', 'r') as fi:...

 上下文管理器在执行时会调用fi的__enter__方法,执行完毕时又会调用fi的__exit__方法,这样就完成了文件对象的创建和关闭。

我们来看下fi的magic函数有哪些:

fi = open('1', 'w')>>> dir(fi)['__class__', '__delattr__', '__doc__', '__enter__', '__exit__', '__format__', '__getattribute__', '__hash__', '__init__', '__iter__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'close', 'closed', 'encoding', 'errors', 'fileno', 'flush', 'isatty', 'mode', 'name', 'newlines', 'next', 'read', 'readinto', 'readline', 'readlines', 'seek', 'softspace', 'tell', 'truncate', 'write', 'writelines', 'xreadlines']

 显然,测试下__enter__和__exit__方法:

>>> fi = open('test.txt', 'r')>>> fi.__enter__()
>>> fi.__exit__()>>> fi.closedTrue

 很明显,__enter__函数打开了文件,而__exit__函数关闭了文件。

通过这个原理,我们可以自己写一些带有__enter__和__exit__函数的对象,这样就可以对这些对象使用上下文管理啦。

上下文管理原理:

#with ** as:object.__enter__()try:    block#可能抛出异常finally:    object.__exit__()

 

转载于:https://www.cnblogs.com/chybot/p/4677361.html

你可能感兴趣的文章
IAAS,SAAS,PAAS, CaaS的区别
查看>>
CentOS7编译安装php7.1
查看>>
我的友情链接
查看>>
Tomcat学习—Tomcat的简介和目录以及配置文件介绍(Windows环境)
查看>>
Cacti安装及配置
查看>>
Oracle的基本使用一
查看>>
我的友情链接
查看>>
刚开通博客
查看>>
前端lvs+keepalived 后端 lnmp 群集 mysql主从+sersync
查看>>
linux挂载windows共享文件夹的方法
查看>>
composer 报错笔记
查看>>
shell脚本真假判断(0为真,非0为假?或0为假,非0为真?)
查看>>
MFT的0x10标准属性数据结构
查看>>
用linux mail命令发送邮件时指定发送人
查看>>
bzoj 1492: [NOI2007]货币兑换Cash
查看>>
我的友情链接
查看>>
bzoj 1922: [Sdoi2010]大陆争霸
查看>>
solarwinds engineer's toolset V9.1 安装 及注册机
查看>>
linux --vsftpd虚拟用户登录时 530 Login incorrect排错
查看>>
linux centos 6.5 安装L2TP *** 每账号绑定1IP地址
查看>>