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 BeautifulSoup中文乱码问题的2种解决方法
Apr 22 Python
将Python代码嵌入C++程序进行编写的实例
Jul 31 Python
Python探索之自定义实现线程池
Oct 27 Python
Python求出0~100以内的所有素数
Jan 23 Python
PythonWeb项目Django部署在Ubuntu18.04腾讯云主机上
Apr 01 Python
pyqt弹出新对话框,以及关闭对话框获取数据的实例
Jun 18 Python
Python定时任务工具之APScheduler使用方式
Jul 24 Python
Django REST框架创建一个简单的Api实例讲解
Nov 05 Python
Python实现socket非阻塞通讯功能示例
Nov 06 Python
修改Pandas的行或列的名字(重命名)
Dec 18 Python
pyinstaller 3.6版本通过pip安装失败的解决办法(推荐)
Jan 18 Python
Python用input输入列表的实例代码
Feb 07 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
PHP实现多进程并行操作的详解(可做守护进程)
2013/06/18 PHP
php构造函数实例讲解
2013/11/13 PHP
thinkphp实现数组分页示例
2014/04/13 PHP
php实现XSS安全过滤的方法
2015/07/29 PHP
php获取远程文件大小
2015/10/20 PHP
PHP编程开发怎么提高编程效率 提高PHP编程技术
2015/11/09 PHP
基于PHP实现数据分页显示功能
2016/05/26 PHP
使用PHP下载CSS文件中的所有图片【几行代码即可实现】
2016/12/14 PHP
简单谈谈PHP面向对象之标识对象
2017/06/27 PHP
php静态成员方法和静态的成员属性的使用方法
2017/10/26 PHP
实测jquery data()如何存值
2013/08/18 Javascript
禁用页面部分JavaScript不是全部而是部分
2014/09/03 Javascript
浅谈JSON.parse()和JSON.stringify()
2015/07/14 Javascript
node.js+express制作网页计算器
2016/01/17 Javascript
百度坐标(BD09)、国测局坐标(火星坐标,GCJ02)、和WGS84坐标系之间的转换
2016/02/19 Javascript
Vue项目自动转换 px 为 rem的实现方法
2018/10/29 Javascript
vue实现可视化可拖放的自定义表单的示例代码
2019/03/20 Javascript
Vue组件之高德地图地址选择功能的实例代码
2019/06/21 Javascript
Javascript和jquery在selenium的使用过程
2019/10/31 jQuery
用Python的线程来解决生产者消费问题的示例
2015/04/02 Python
python将ansible配置转为json格式实例代码
2017/05/15 Python
使用Python爬取最好大学网大学排名
2018/02/24 Python
python list删除元素时要注意的坑点分享
2018/04/18 Python
python实现类之间的方法互相调用
2018/04/29 Python
Python实现正整数分解质因数操作示例
2018/08/01 Python
Python  Django 母版和继承解析
2019/08/09 Python
python应用文件读取与登录注册功能
2019/09/23 Python
如何用 Python 制作一个迷宫游戏
2021/02/25 Python
html5中JavaScript removeChild 删除所有节点
2014/05/16 HTML / CSS
canvas绘制圆角头像的实现方法
2019/01/17 HTML / CSS
铭万公司.net面试题笔试题
2014/07/20 面试题
AssertionError 跟一下那个类是 “is – a”的关系
2012/02/21 面试题
社区党建工作方案
2014/06/10 职场文书
商务考察邀请函模板
2015/02/02 职场文书
避暑山庄导游词
2015/02/04 职场文书
PyTorch 如何检查模型梯度是否可导
2021/06/05 Python