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使用代理抓取网站图片(多线程)
Mar 14 Python
Python中文件操作简明介绍
Apr 13 Python
详解Python中的__new__、__init__、__call__三个特殊方法
Jun 02 Python
Python中类型检查的详细介绍
Feb 13 Python
解决phantomjs截图失败,phantom.exit位置的问题
May 17 Python
selenium使用chrome浏览器测试(附chromedriver与chrome的对应关系表)
Nov 29 Python
python 应用之Pycharm 新建模板默认添加编码格式-作者-时间等信息【推荐】
Jun 17 Python
PyQt QCombobox设置行高的方法
Jun 20 Python
简单了解python PEP的一些知识
Jul 13 Python
pytorch逐元素比较tensor大小实例
Jan 03 Python
Pycharm导入anaconda环境的教程图解
Jul 31 Python
pycharm如何使用anaconda中的各种包(操作步骤)
Jul 31 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
Yii2针对指定url的生成及图片等的引入方法小结
2016/07/18 PHP
Yii框架的布局文件实例分析
2019/09/04 PHP
HTML 自动伸缩的表格Table js实现
2009/04/01 Javascript
jQuery Ajax之load()方法
2009/10/12 Javascript
seajs1.3.0源码解析之module依赖有序加载
2012/11/07 Javascript
基于jquery库的tab新形式使用
2012/11/16 Javascript
JQuery实现级联下拉框效果实例讲解
2015/09/17 Javascript
轻松实现javascript图片轮播特效
2016/01/13 Javascript
Bootstrap三种表单布局的使用方法
2016/06/21 Javascript
Angularjs中$http以post请求通过消息体传递参数的实现方法
2016/08/05 Javascript
移动端web滚动分页的实现方法
2017/05/05 Javascript
微信小程序开发之好友列表字母列表跳转对应位置
2017/09/26 Javascript
浅谈Vue数据响应思路之数组
2018/11/06 Javascript
js笔试题-接收get请求参数
2019/06/15 Javascript
Vue登录拦截 登录后继续跳转指定页面的操作
2020/08/04 Javascript
NodeJS模块Buffer原理及使用方法解析
2020/11/11 NodeJs
Python构造函数及解构函数介绍
2015/02/26 Python
使用Python实现下载网易云音乐的高清MV
2015/03/16 Python
学习python之编写简单简单连接数据库并执行查询操作
2016/02/27 Python
Pandas库之DataFrame使用的学习笔记
2019/06/21 Python
python requests.get带header
2020/05/05 Python
HTML5的Geolocation地理位置定位API使用教程
2016/05/12 HTML / CSS
美国家用电器和电子产品商店:Abt
2016/09/06 全球购物
家庭睡衣和家庭用品:Little Blue House
2018/03/18 全球购物
微软瑞士官方网站:Microsoft瑞士
2018/04/20 全球购物
澳大利亚天然护肤品、化妆品和健康产品一站式商店:Nourished Life
2018/12/02 全球购物
C语言编程题
2015/03/09 面试题
公安学专业求职信
2014/07/27 职场文书
投标承诺函范文
2015/01/21 职场文书
党员年度个人总结
2015/02/14 职场文书
返乡农民工证明
2015/06/24 职场文书
公务员处分决定书
2015/06/25 职场文书
MySQL数据迁移相关总结
2021/04/29 MySQL
Golang 如何实现函数的任意类型传参
2021/04/29 Golang
交互式可视化js库gojs使用介绍及技巧
2022/02/18 Javascript
spring注解 @PropertySource配置数据源全流程
2022/03/25 Java/Android