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计算最大优先级队列实例
Dec 18 Python
Python中的yield浅析
Jun 16 Python
python简单获取本机计算机名和IP地址的方法
Jun 03 Python
python使用xslt提取网页数据的方法
Feb 23 Python
python使用Pycharm创建一个Django项目
Mar 05 Python
python pandas修改列属性的方法详解
Jun 09 Python
python变量的存储原理详解
Jul 10 Python
Python math库 ln(x)运算的实现及原理
Jul 17 Python
对python 中re.sub,replace(),strip()的区别详解
Jul 22 Python
pycharm实现print输出保存到txt文件
Jun 01 Python
Python csv文件记录流程代码解析
Jul 16 Python
Python 数据可视化之Matplotlib详解
Nov 02 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+dbfile开发小型留言本
2006/10/09 PHP
一个用php3编写的简单计数器
2006/10/09 PHP
PHP中3种生成XML文件方法的速度效率比较
2012/10/06 PHP
php strnatcmp()函数的用法总结
2013/11/27 PHP
非常棒的10款jQuery 幻灯片插件
2011/06/14 Javascript
seaJs的模块定义和模块加载浅析
2014/06/06 Javascript
JavaScript代码实现禁止右键、禁选择、禁粘贴、禁shift、禁ctrl、禁alt
2015/11/17 Javascript
jQuery实现控制文字内容溢出用省略号(…)表示的方法
2016/02/26 Javascript
NodeJS连接MongoDB数据库时报错的快速解决方法
2016/05/13 NodeJs
JavaScript中三个等号和两个等号你了解多少
2017/07/04 Javascript
Vue父组件调用子组件事件方法
2018/02/23 Javascript
详解Vue 多级组件透传新方法provide/inject
2018/05/09 Javascript
JS实现倒计时图文效果
2018/11/17 Javascript
微信小程序开发实现消息推送
2020/11/18 Javascript
原生JS实现萤火虫效果
2020/03/07 Javascript
学前端,css与javascript重难点浅析
2020/06/11 Javascript
python遍历文件夹并删除特定格式文件的示例
2014/03/05 Python
记录Django开发心得
2014/07/16 Python
通过Pandas读取大文件的实例
2018/06/07 Python
Random 在 Python 中的使用方法
2018/08/09 Python
python 应用之Pycharm 新建模板默认添加编码格式-作者-时间等信息【推荐】
2019/06/17 Python
执行Django数据迁移时报 1091错误及解决方法
2019/10/14 Python
python实现人机猜拳小游戏
2020/02/03 Python
Python内建序列通用操作6种实现方法
2020/03/26 Python
python数据类型强制转换实例详解
2020/06/22 Python
Python使用windows设置定时执行脚本
2020/11/12 Python
canvas实现图片马赛克的示例代码
2018/03/26 HTML / CSS
让IE9以下版本的浏览器兼容HTML5的方法
2014/03/12 HTML / CSS
北美大型运动类产品商城:Champs Sports
2017/01/12 全球购物
教育系毕业生中文求职信范文
2013/10/06 职场文书
感恩节红领巾广播稿
2014/02/11 职场文书
党员学习群众路线教育实践活动对照检查材料
2014/09/23 职场文书
董事长开业致辞
2015/07/29 职场文书
导游词之香港-太平山顶
2019/10/18 职场文书
一文弄懂MySQL中redo log与binlog的区别
2022/02/15 MySQL
mybatis源码解读之executor包语句处理功能
2022/02/15 Java/Android