Python上下文管理器用法及实例解析


Posted in Python onNovember 11, 2019

这篇文章主要介绍了Python上下文管理器用法及实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

with上下文管理器

语法:with ... as ... 如:with open('test.txt', 'r') as fp,打开一个文件作为文件句柄对象赋值给fp

with是一个语句块,上下文管理器中里面实现了两个方法:enter, exit,enter是进入代码块前自动调用的方法,exit是

退出with语句块时调用的,例如,文件对象在退出上下文管理器时调用了exit中的self.close()语句,所以就不用手动去关闭文件

只要重写了enter方法和exit两个方法,就可以自定义一个with上下文管理器

class SayHello(object):
 def __init__(self, text):
  self.text = text
 def __enter__(self):
  return self #必须返回对象
 def __exit__(self, exc_type, exc_value, traceback):
  self.text = "Bye!"

with SayHello("Hello") as greet:
 print(greet.text)
print(greet.text)

输出:

Hello
Bye!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python实现异步回调机制代码分享
Jan 10 Python
使用Python的web.py框架实现类似Django的ORM查询的教程
May 02 Python
python从网络读取图片并直接进行处理的方法
May 22 Python
python3中dict(字典)的使用方法示例
Mar 22 Python
python使用mysql的两种使用方式
Mar 07 Python
python2.7的flask框架之引用js&css等静态文件的实现方法
Aug 22 Python
python实现复制文件到指定目录
Oct 16 Python
python调用matplotlib模块绘制柱状图
Oct 18 Python
Python利用多线程同步锁实现多窗口订票系统(推荐)
Dec 22 Python
Python爬取YY评级分数并保存数据实现过程解析
Jun 01 Python
python opencv 实现读取、显示、写入图像的方法
Jun 08 Python
Ubuntu权限不足无法创建文件夹解决方案
Nov 14 Python
Django 请求Request的具体使用方法
Nov 11 #Python
浅谈Python类中的self到底是干啥的
Nov 11 #Python
python 调试冷知识(小结)
Nov 11 #Python
通过 Django Pagination 实现简单分页功能
Nov 11 #Python
python机器学习实现决策树
Nov 11 #Python
Python SQLAlchemy入门教程(基本用法)
Nov 11 #Python
django中间键重定向实例方法
Nov 10 #Python
You might like
PHP网站备份程序代码分享
2011/06/10 PHP
在Laravel 的 Blade 模版中实现定义变量
2019/10/14 PHP
thinkphp5.1 框架钩子和行为用法实例分析
2020/05/25 PHP
Avengerls vs Newbee BO3 第二场2.18
2021/03/10 DOTA
非常不错的一个javascript 类
2006/11/07 Javascript
Web 前端设计模式--Dom重构 提高显示性能
2010/10/22 Javascript
关于jquery append() html时的小问题的解决方法
2010/12/16 Javascript
jQuery移动和复制dom节点实用DOM操作案例
2012/12/17 Javascript
javascript实现信息的显示和隐藏如注册页面
2013/12/03 Javascript
jquery选择器之内容过滤选择器详解
2014/01/27 Javascript
js创建对象的区别示例介绍
2014/07/24 Javascript
了不起的node.js读书笔记之mongodb数据库交互
2014/12/22 Javascript
浅谈javascript的调试
2015/01/28 Javascript
Easyui Treegrid改变默认图标的方法
2016/04/29 Javascript
JS常见算法详解
2017/02/28 Javascript
vue.js 左侧二级菜单显示与隐藏切换的实例代码
2017/05/23 Javascript
20行JS代码实现粘贴板复制功能
2018/02/06 Javascript
Vue2.0子同级组件之间数据交互方法
2018/02/28 Javascript
使用JavaScript中的lodash编写双色球效果
2018/06/24 Javascript
js将URL网址转为16进制加密与解密函数
2020/03/04 Javascript
使用JavaScript获取Django模板指定键值数据
2020/05/27 Javascript
解决vant框架做H5时踩过的坑(下拉刷新、上拉加载等)
2020/11/11 Javascript
Python查看多台服务器进程的脚本分享
2014/06/11 Python
Python工程师面试题 与Python Web相关
2016/01/14 Python
常见python正则用法的简单实例
2016/06/21 Python
Windows下Python2与Python3两个版本共存的方法详解
2017/02/12 Python
详解Django的model查询操作与查询性能优化
2018/10/16 Python
解决Jupyter notebook中.py与.ipynb文件的import问题
2020/04/21 Python
CSS3属性background-size使用指南
2014/12/09 HTML / CSS
西安启天科技有限公司网络工程师面试题笔试题
2016/06/12 面试题
总经理驾驶员岗位职责
2013/12/04 职场文书
优秀团支部事迹材料
2014/02/08 职场文书
实习证明模板
2015/06/16 职场文书
2019年幼儿园家长接送责任书
2019/10/29 职场文书
浅谈Python协程asyncio
2021/06/20 Python
vue.js Router中嵌套路由的实用示例
2021/06/27 Vue.js