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 相关文章推荐
web.py在模板中输出美元符号的方法
Aug 26 Python
Python 抓取动态网页内容方案详解
Dec 25 Python
Python3中常用的处理时间和实现定时任务的方法的介绍
Apr 07 Python
python实现简单爬虫功能的示例
Oct 24 Python
深入理解python对json的操作总结
Jan 05 Python
Python抓取聚划算商品分析页面获取商品信息并以XML格式保存到本地
Feb 23 Python
Python常见数据结构之栈与队列用法示例
Jan 14 Python
Win10下安装并使用tensorflow-gpu1.8.0+python3.6全过程分析(显卡MX250+CUDA9.0+cudnn)
Feb 17 Python
Python同时处理多个异常的方法
Jul 28 Python
python 服务器运行代码报错ModuleNotFoundError的解决办法
Sep 16 Python
pycharm配置安装autopep8自动规范代码的实现
Mar 02 Python
浅谈怎么给Python添加类型标注
Jun 08 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数组实例总结与说明
2011/08/23 PHP
PHP读取PDF内容配合Xpdf的使用
2012/11/24 PHP
PHP版 汉字转码的实现详解
2013/06/09 PHP
PHP 验证身份证是否合法的函数
2017/02/09 PHP
PHP后台微信支付和支付宝支付开发
2017/04/28 PHP
PHP设计模式之建造者模式(Builder)原理与用法案例详解
2019/12/12 PHP
JQuery 选择器 xpath 语法应用
2010/05/13 Javascript
ExtJS4 Grid改变单元格背景颜色及Column render学习
2013/02/06 Javascript
关于jQuery参考实例 1.0 jQuery的哲学
2013/04/07 Javascript
jquery获取元素索引值index()示例
2014/02/13 Javascript
Node.js入门教程:在windows和Linux上安装配置Node.js图文教程
2014/08/14 Javascript
jQuery原生的动画效果
2015/07/10 Javascript
JS判断页面是否出现滚动条的方法
2015/07/17 Javascript
jquery判断输入密码两次是否相等
2020/04/22 Javascript
[原创]Javascript 实现广告后加载 可加载百度谷歌联盟广告
2016/05/11 Javascript
Node.js Addons翻译(C/C++扩展)
2016/06/12 Javascript
bootstrap按钮插件(Button)使用方法解析
2017/01/13 Javascript
详解使用nvm管理多版本node的方法
2017/08/30 Javascript
浅谈Vue.js 组件中的v-on绑定自定义事件理解
2017/11/17 Javascript
React Native悬浮按钮组件的示例代码
2018/04/05 Javascript
vue  自定义组件实现通讯录功能
2018/09/30 Javascript
详解vue项目打包步骤
2019/03/29 Javascript
详解Vue项目中实现锚点定位
2019/04/24 Javascript
50行代码实现贪吃蛇(具体思路及代码)
2013/04/27 Python
python集合比较(交集,并集,差集)方法详解
2018/09/13 Python
Python3获取电脑IP、主机名、Mac地址的方法示例
2019/04/11 Python
python切片的步进、添加、连接简单操作示例
2019/07/11 Python
Python csv文件的读写操作实例详解
2019/11/19 Python
python性能测试工具locust的使用
2020/12/28 Python
HTML5 drag和drop具体使用详解
2021/01/18 HTML / CSS
中专自荐信
2013/10/13 职场文书
大学生求职自荐信
2013/12/12 职场文书
学生会竞聘书范文
2014/03/31 职场文书
运动会广播稿200字(10篇)
2014/10/12 职场文书
关于antd tree 和父子组件之间的传值问题(react 总结)
2021/06/02 Javascript
把77A收信机改造成收音机
2022/04/05 无线电