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中的__future__模块
Apr 27 Python
python获取一组汉字拼音首字母的方法
Jul 01 Python
使用Python操作MySQL的一些基本方法
Aug 16 Python
Windows和Linux下Python输出彩色文字的方法教程
May 02 Python
Python图像处理实现两幅图像合成一幅图像的方法【测试可用】
Jan 04 Python
pyqt 多窗口之间的相互调用方法
Jun 19 Python
深入解析神经网络从原理到实现
Jul 26 Python
Django分页功能的实现代码详解
Jul 29 Python
Python:type、object、class与内置类型实例
Dec 25 Python
python数据类型可变不可变知识点总结
Mar 06 Python
Python filter过滤器原理及实例应用
Aug 18 Python
python数字图像处理实现图像的形变与缩放
Jun 28 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与已存在的Java应用程序集成
2006/10/09 PHP
兼容PHP5的PHP目录管理函数库
2008/07/10 PHP
php实现从上传文件创建缩略图的方法
2015/04/02 PHP
PHP+HTML+JavaScript+Css实现简单爬虫开发
2016/03/28 PHP
PHP+fiddler抓包采集微信文章阅读数点赞数的思路详解
2019/12/20 PHP
php的lavarel框架中join和orWhere的用法
2020/12/28 PHP
js中reverse函数的用法详解
2013/12/26 Javascript
Nodejs sublime text 3安装与配置
2014/06/19 NodeJs
jquery隔行换色效果实现方法
2015/01/15 Javascript
node.js [superAgent] 请求使用示例
2015/03/13 Javascript
详解Javacript和AngularJS中的Promises
2016/02/09 Javascript
获取input标签的所有属性的方法
2016/06/28 Javascript
jQuery与JS加载事件用法分析
2016/09/04 Javascript
Ionic2系列之使用DeepLinker实现指定页面URL
2016/11/21 Javascript
JS实用的带停顿的逐行文本循环滚动效果实例
2016/11/23 Javascript
textarea 在浏览器中固定大小和禁止拖动的实现方法
2016/12/03 Javascript
vue-router 组件复用问题详解
2018/01/22 Javascript
JS运动特效之同时运动实现方法分析
2018/01/24 Javascript
Vue cli+mui 区域滚动的实例代码
2018/01/25 Javascript
解决Angular.js中使用Swiper插件不能滑动的问题
2018/02/26 Javascript
对类Vue的MVVM前端库的实现代码
2018/09/07 Javascript
React实现阿里云OSS上传文件的示例
2020/08/10 Javascript
微信小程序接入vant Weapp组件的详细步骤
2020/10/28 Javascript
vue 使用 sortable 实现 el-table 拖拽排序功能
2020/12/26 Vue.js
python用post访问restful服务接口的方法
2018/12/07 Python
Python 保存加载mat格式文件的示例代码
2020/08/04 Python
如何利用cmp命令比较文件
2016/04/11 面试题
实习生自我鉴定范文
2013/12/05 职场文书
设计顾问服务计划书
2014/05/04 职场文书
领导班子三严三实对照检查材料
2014/09/25 职场文书
毕业生就业推荐表自我评价
2015/03/02 职场文书
简历自荐信范文
2015/03/09 职场文书
原来闭幕词是这样写的呀!
2019/07/01 职场文书
vue引入Excel表格插件的方法
2021/04/28 Vue.js
css display table 自适应高度、宽度问题的解决
2021/05/07 HTML / CSS
SQLServer 错误: 15404,无法获取有关 Windows NT 组/用户 WIN-8IVSNAQS8T7\Administrator 的信息
2021/06/30 SQL Server