Python with语句用法原理详解


Posted in Python onJuly 03, 2020

with 用法理解

Overview

with 与with之后的object一起,起到了抛出异常和单独生成一个空间让代码在空间里运行的效果。

实验代码

class A:
  def __init__(self):
    self.a = 0

  def __enter__(self):
    print('enter')
  def __exit__(self, exc_type, exc_val, exc_tb):
    print('exit')
if __name__ == '__main__':

  a = A()
  with a:
    print('first step')
    print(1/0)
    print('last setp')
  print('continue running')
  print('continue running')
  print('continue running')
  print('continue running')

上述代码输出结果为

enter
first step
exit
ZeroDivisionError: division by zero

代码理解

根据上述代码的测试结果可以看出:

with语句先运行,with之后对象的__enter__()方法

然后运行with空间的代码

1.1. 当with空间代码出错后,会直接运行__exit__()方法,然后抛出异常

1.2 当with空间代码没有错误时,程序按顺序__enter()__>> 逻辑语句>>exit()>>之后的代码继续运行

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

Python 相关文章推荐
Python实现的使用telnet登陆聊天室实例
Jun 17 Python
Python基于QRCode实现生成二维码的方法【下载,安装,调用等】
Jul 11 Python
Python编写一个闹钟功能
Jul 11 Python
Django rest framework基本介绍与代码示例
Jan 26 Python
python3利用Dlib19.7实现人脸68个特征点标定
Feb 26 Python
使用Python AIML搭建聊天机器人的方法示例
Jul 09 Python
​如何愉快地迁移到 Python 3
Apr 28 Python
详解Python并发编程之从性能角度来初探并发编程
Aug 23 Python
python实现多线程端口扫描
Aug 31 Python
python调用jenkinsAPI构建jenkins,并传递参数的示例
Dec 09 Python
python字典按照value排序方法
Dec 28 Python
python中常用的数据结构介绍
Jan 12 Python
Keras搭建自编码器操作
Jul 03 #Python
python 识别登录验证码图片功能的实现代码(完整代码)
Jul 03 #Python
python图片验证码识别最新模块muggle_ocr的示例代码
Jul 03 #Python
keras topN显示,自编写代码案例
Jul 03 #Python
python如何使用代码运行助手
Jul 03 #Python
Python 3.10 的首个 PEP 诞生,内置类型 zip() 迎来新特性(推荐)
Jul 03 #Python
python3 简单实现组合设计模式
Jul 02 #Python
You might like
Windows下的PHP5.0详解
2006/11/18 PHP
Gregarius中文日期格式问题解决办法
2008/04/22 PHP
使用php来实现网络服务
2009/09/15 PHP
PHP is_subclass_of函数的一个BUG和解决方法
2014/06/01 PHP
ThinkPHP之M方法实例详解
2014/06/20 PHP
利用Laravel事件系统如何实现登录日志的记录详解
2017/05/20 PHP
Laravel框架中VerifyCsrfToken报错问题的解决
2017/08/30 PHP
jquery的ajax从纯真网(cz88.net)获取IP地址对应地区名
2009/12/02 Javascript
淘宝搜索框效果实现分析
2011/03/05 Javascript
使用js实现雪花飘落效果
2013/08/26 Javascript
基于NodeJS的前后端分离的思考与实践(六)Nginx + Node.js + Java 的软件栈部署实践
2014/09/26 NodeJs
浅谈Javascript 数组与字典
2015/01/29 Javascript
如何减少浏览器的reflow和repaint
2015/02/26 Javascript
js实时获取并显示当前时间的方法
2015/07/31 Javascript
简单几步实现返回顶部效果
2016/12/05 Javascript
Vue实现一个返回顶部backToTop组件
2017/07/25 Javascript
微信小程序使用wxParse解析html的方法教程
2018/07/06 Javascript
Vue多组件仓库开发与发布详解
2019/02/28 Javascript
一个小时快速搭建微信小程序的方法步骤
2019/04/15 Javascript
node.js基于dgram数据报模块创建UDP服务器和客户端操作示例
2020/02/12 Javascript
js实现纯前端压缩图片
2020/11/16 Javascript
[01:47]2018年度DOTA2最具人气解说-完美盛典
2018/12/16 DOTA
理解Python中的With语句
2015/02/02 Python
详解Python编程中基本的数学计算使用
2016/02/04 Python
python在非root权限下的安装方法
2018/01/23 Python
python中字符串比较使用is、==和cmp()总结
2018/03/18 Python
Flask-Mail用法实例分析
2018/07/21 Python
Python 3.3实现计算两个日期间隔秒数/天数的方法示例
2019/01/07 Python
python浪漫表白源码
2019/04/05 Python
教你如何一步一步用Canvas写一个贪吃蛇
2018/10/22 HTML / CSS
医学毕业生自我鉴定
2013/10/30 职场文书
毕业生求职推荐信
2013/11/04 职场文书
2014年三八妇女节活动方案
2014/02/28 职场文书
内蒙古鄂尔多斯市市长寄语
2014/04/10 职场文书
css3 利用transform-origin 实现圆点分布在大圆上布局及旋转特效
2021/04/29 HTML / CSS
Java实现房屋出租系统详解
2021/10/05 Java/Android