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标准库与第三方库详解
Jul 22 Python
Python socket C/S结构的聊天室应用实现
Nov 30 Python
pandas 获取季度,月度,年度首尾日期的方法
Apr 11 Python
Python实现的根据文件名查找数据文件功能示例
May 02 Python
解决Python中list里的中文输出到html模板里的问题
Dec 17 Python
Django项目使用CircleCI的方法示例
Jul 14 Python
python写入数据到csv或xlsx文件的3种方法
Aug 23 Python
python数据库编程 ODBC方式实现通讯录
Mar 27 Python
python 从list中随机取值的方法
Nov 16 Python
python 三种方法实现对Excel表格的读写
Nov 19 Python
django上传文件的三种方式
Apr 29 Python
Python使用Kubernetes API访问集群
May 30 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
PHP5 的对象赋值机制介绍
2011/08/02 PHP
PHP获取数组长度或某个值出现次数的方法
2015/02/11 PHP
smarty模板引擎之分配数据类型
2015/03/30 PHP
php实现TCP端口检测的方法
2015/04/01 PHP
PHP curl模拟登录带验证码的网站
2015/11/30 PHP
ThinkPHP5 框架引入 Go AOP,PHP AOP编程项目详解
2020/05/12 PHP
Yii 框架使用Forms操作详解
2020/05/18 PHP
JavaScript 数组的 uniq 方法
2008/01/23 Javascript
js 替换功能函数,用正则表达式解决,js的全部替换
2010/12/08 Javascript
使用jQuery Ajax功能时需要注意的一个问题(内存溢出)
2012/05/30 Javascript
ComboBox 和 DateField 在IE下消失的解决方法
2013/08/30 Javascript
js正则表达exec与match的区别说明
2014/01/29 Javascript
JS未跨域操作iframe里的DOM
2016/06/01 Javascript
JS模拟的Map类实现方法
2016/06/17 Javascript
js实现四舍五入完全保留两位小数的方法
2016/08/02 Javascript
纯JS焦点图特效实例(可一个页面多用)
2016/12/07 Javascript
jQuery EasyUI 为Combo,Combobox添加清除值功能的实例
2017/04/13 jQuery
垃圾回收器的相关知识点总结
2018/05/13 Javascript
判断iOS、Android以及PC端的示例代码
2018/11/15 Javascript
Vue 样式绑定的实现方法
2019/01/15 Javascript
Vue.js中的extend绑定节点并显示的方法
2019/06/20 Javascript
layui数据表格 table.render 报错的解决方法
2019/09/29 Javascript
python实现随机密码字典生成器示例
2014/04/09 Python
跟老齐学Python之正规地说一句话
2014/09/28 Python
Python装饰器用法实例分析
2019/01/14 Python
python与字符编码问题
2019/05/24 Python
python项目对接钉钉SDK的实现
2019/07/15 Python
Python ini文件常用操作方法解析
2020/04/26 Python
英国Zoro工具:手动工具,电动工具和个人防护用品
2016/11/02 全球购物
C++:memset ,memcpy和strcpy的根本区别
2013/04/27 面试题
公务员综合考察材料
2014/02/01 职场文书
记帐员岗位责任制
2014/02/08 职场文书
小学运动会开幕词
2015/01/28 职场文书
地球一小时活动总结
2015/02/27 职场文书
2015年推广普通话演讲稿
2015/03/20 职场文书
幼儿园新生开学寄语
2015/05/27 职场文书