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的web框架中配置app的教程
Apr 30 Python
Python中模块string.py详解
Mar 12 Python
Python用sndhdr模块识别音频格式详解
Jan 11 Python
Python 经典面试题 21 道【不可错过】
Sep 21 Python
PyCharm鼠标右键不显示Run unittest的解决方法
Nov 30 Python
python多线程抽象编程模型详解
Mar 20 Python
详解python--模拟轮盘抽奖游戏
Apr 12 Python
python实现知乎高颜值图片爬取
Aug 12 Python
jupyter notebook中美观显示矩阵实例
Apr 17 Python
Django项目uwsgi+Nginx保姆级部署教程实现
Apr 19 Python
Python xlwt模块使用代码实例
Jun 10 Python
python opencv检测直线 cv2.HoughLinesP的实现
Jun 18 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
?生?D片??C字串
2006/12/06 PHP
基于ubuntu下nginx+php+mysql安装配置的具体操作步骤
2013/04/28 PHP
PHP结合jQuery实现找回密码
2015/07/22 PHP
Laravel框架实现定时发布任务的方法
2018/08/16 PHP
JS对文本框值的判断示例
2014/03/10 Javascript
深入分析JQuery和JavaScript的异同
2014/10/23 Javascript
node.js中的socket.io的广播消息
2014/12/15 Javascript
JQuery实现级联下拉框效果实例讲解
2015/09/17 Javascript
JS截取与分割字符串常用技巧总结
2015/11/10 Javascript
easyui validatebox验证
2016/04/29 Javascript
详解jQuery中的DOM操作
2016/12/23 Javascript
js如何获取网页所有图片
2017/05/12 Javascript
详解vuejs几种不同组件(页面)间传值的方式
2017/06/01 Javascript
js实现图片放大展示效果
2017/08/30 Javascript
vue组件间通信子与父详解(二)
2017/11/07 Javascript
动态加载、移除js/css文件的示例代码
2018/03/20 Javascript
jQuery实现列表的增加和删除功能
2018/06/14 jQuery
element-ui 关于获取select 的label值方法
2018/08/24 Javascript
Vue.js的动态组件模板的实现
2018/11/26 Javascript
js中关于Blob对象的介绍与使用
2019/11/29 Javascript
微信小程序实现二维码签到考勤系统
2020/01/16 Javascript
解决vue使用vant下拉框van-dropdown-item 绑定title值不变问题
2020/08/05 Javascript
javascript局部自定义鼠标右键菜单
2020/12/08 Javascript
python自定义类并使用的方法
2015/05/07 Python
Django查询数据库的性能优化示例代码
2017/09/24 Python
Python利用正则表达式实现计算器算法思路解析
2018/04/25 Python
Python语言快速上手学习方法
2018/12/14 Python
python打包成so文件过程解析
2019/09/28 Python
Python高级编程之继承问题详解(super与mro)
2019/11/19 Python
Python3与fastdfs分布式文件系统如何实现交互
2020/06/23 Python
HTML5离线缓存Manifest是什么
2016/03/09 HTML / CSS
综合实践活动总结
2014/05/05 职场文书
计算机应用专业毕业生求职信
2014/06/03 职场文书
安全口号大全
2014/06/21 职场文书
语文教研活动总结
2014/07/02 职场文书
退货证明模板
2015/06/23 职场文书