Python with语句用法原理详解
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 async with和async for的使用
网上async with和async for的中文资料比较少,我把PEP 492中的官方陈述翻译一下. 异步上下文管理器"async with" 异步上下文管理器指的是在enter和exit方法处能够暂停执行的上下文管理器. 为了实现这样的功能,需要加入两个新的方法:__aenter__ 和__aexit__.这两个方法都要返回一个 awaitable类型的值. 异步上下文管理器的一种使用方法是: class AsyncContextManager: async def __aente
-
Python打开文件、文件读写操作、with方式、文件常用函数实例分析
本文实例讲述了Python打开文件.文件读写操作.with方式.文件常用函数.分享给大家供大家参考,具体如下: 打开文件: 在python3中,打开文件的函数是: open(file, mode='r', buffering=None, encoding=None, errors=None, newline=None, closefd=True) 参数说明: file--文件名 mode-打开模式,默认只读模式 buffering--如果buffering的值被设为0,就不会有寄存.如果buff
-
Python中的CSV文件使用"with"语句的方式详解
是否可以直接使用with语句与CSV文件?能够做这样的事情似乎很自然: import csv with csv.reader(open("myfile.csv")) as reader: # do things with reader 但是csv.reader不提供__enter__和__exit__方法,所以这不行.但是我可以分两步做: import csv with open("myfile.csv") as f: reader = csv.reader(f)
-
深入浅析python with语句简介
with 语句是从 Python 2.5 开始引入的一种与异常处理相关的功能(2.5 版本中要通过 from __future__ import with_statement 导入后才可以使用),从 2.6 版本开始缺省可用(参考 What's new in Python 2.6? 中 with 语句相关部分介绍).with 语句适用于对资源进行访问的场合,确保不管使用过程中是否发生异常都会执行必要的"清理"操作,释放资源,比如文件使用后自动关闭.线程中锁的自动获取和释放等. 术语 要
-
在python中使用with打开多个文件的方法
虽然初恋是java, 可是最近是越来越喜欢python, 所以决定追根溯源好好了解下python的原理,架构等等.小脑袋瓜不太好使,只能记录下慢慢进步吧 使用with打开文件的好处不多说,这里记录一下如果要打开多个文件,该怎么书写简捷的代码. 场景是同时打开三个文件,文件行数一样,程序实现每个文件依次读取一行,同时输出. 首先来一种比较容易想到的写法,如下一样嵌套: with open('file1') as f1: with open('file2') as f2: with open('fi
-
Python with用法:自动关闭文件进程
实际上,Python 提供了 with 语句来管理资源关闭.比如可以把打开的文件放在 with 语句中,这样 with 语句就会帮我们自动关闭文件. with 语句的语法格式如下: with context expression [as target(s)]: with 代码块 在上面的语法格式中,context_expression 用于创建可自动关闭的资源. 例如,程序使用 with 语句来读取文件: import codecs # 使用with语句打开文件,该语句会负责关闭文件 with
-
详解Python with/as使用说明
with/as 使用open打开过文件的对with/as都已经非常熟悉,其实with/as是对try/finally的一种替代方案. 当某个对象支持一种称为"环境管理协议"的协议时,就会通过环境管理器来自动执行某些善后清理工作,就像finally一样:不管中途是否发生异常,最终都会执行某些清理操作. 用法: with expression [as var]: with_block_code 当expression返回的对象是支持环境管理协议的时候,就可以使用with.as var是可选
-
Python学习笔记之读取文件、OS模块、异常处理、with as语法示例
本文实例讲述了Python学习笔记之读取文件.OS模块.异常处理.with as语法.分享给大家供大家参考,具体如下: 文件读取 #读取文件 f = open("test.txt","r") print(f.read()) #打印文件内容 #关闭文件 f.close() 获取文件绝对路径:OS模块 os.environ["xxx"] 获取系统环境变量 os.getcwd 获取当前python脚本工作路径 os.getpid() 获取当前进程ID
-
Python with语句用法原理详解
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() wi
-
Python模块future用法原理详解
这篇文章主要介绍了Python模块future用法原理详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 计算机的知识太多了,很多东西就是一个使用过程中详细积累的过程.最近遇到了一个很久关于future的问题,踩了坑,这里就做个笔记,免得后续再犯类似错误. future的作用:把下一个新版本的特性导入到当前版本,于是我们就可以在当前版本中测试一些新版本的特性.说的通俗一点,就是你不用更新python的版本,直接加这个模块,就可以使用python
-
python模块常用用法实例详解
1.time模块(※※※※) import time #导入时间模块 print(time.time()) #返回当前时间的时间戳,可用于计算程序运行时间 print(time.localtime()) #返回当地时间的结构化时间格式,参数默认为时间戳 print(time.gmtime) #返回UTC时间的结构化时间格式 print(time.mktime(time.localtime())) #将结构化时间转换为时间戳 print(time.strftime("%Y-%m-%d %X&quo
-
Python中return用法案例详解
python中return的用法 1.return语句就是把执行结果返回到调用的地方,并把程序的控制权一起返回 程序运行到所遇到的第一个return即返回(退出def块),不会再运行第二个return. 例如: def haha(x,y): if x==y: return x,y print(haha(1,1)) 已改正: 结果:这种return传参会返回元组(1, 1) 2.但是也并不意味着一个函数体中只能有一个return 语句,例如: def test_return(x): if x >
-
python sys.argv[]用法实例详解
sys.argv[]是用来获取命令行参数的,sys.argv[0]表示代码本身文件路径,所以参数从1开始,以下两个例子说明: 1.使用sys.argv[]的一简单实例: 以下是sample1.py文件: import sys,os print sys.argv os.system(sys.argv[1]) 这个例子os.system接收命令行参数,运行参数指令,cmd命令行带参数运行python sample1.py notepad,将打开记事本程序. 2.这个例子是简明python教程上的,明
-
python scatter函数用法实例详解
这篇文章主要介绍了python scatter函数用法实例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 函数功能:寻找变量之间的关系. 调用签名:plt.scatter(x, y, c="b", label="scatter figure") x: x轴上的数值 y: y轴上的数值 c:散点图中的标记的颜色 label:标记图形内容的标签文本 代码实现: import matplotlib.pyplot as
-
Python日志syslog使用原理详解
这篇文章主要介绍了Python日志syslog使用原理详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 syslog的官方说明在: https://docs.python.org/2/library/syslog.html#module-syslog 该模块的主要方式为: #!/usr/bin/python # -*- coding: utf-8 -*- import syslog syslog.openlog([ident[, logopt
-
Python定时器线程池原理详解
这篇文章主要介绍了Python定时器线程池原理详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 定时器执行循环任务: 知识储备 Timer(interval, function, args=None, kwargs=None) interval ===> 时间间隔 单位为s function ===> 定制执行的函数 使用threading的 Timer 类 start() 为通用的开始执行方法 cancel ()为取消执行的方法 普通单次
-
Python字典底层实现原理详解
在Python中,字典是通过散列表或说哈希表实现的.字典也被称为关联数组,还称为哈希数组等.也就是说,字典也是一个数组,但数组的索引是键经过哈希函数处理后得到的散列值.哈希函数的目的是使键均匀地分布在数组中,并且可以在内存中以O(1)的时间复杂度进行寻址,从而实现快速查找和修改.哈希表中哈希函数的设计困难在于将数据均匀分布在哈希表中,从而尽量减少哈希碰撞和冲突.由于不同的键可能具有相同的哈希值,即可能出现冲突,高级的哈希函数能够使冲突数目最小化.Python中并不包含这样高级的哈希函数,几个重要
-
python实现高斯模糊及原理详解
高斯模糊是一种常见的模糊技术,相关知识点有:高斯函数.二维卷积. (一)一维高斯分布函数 一维(连续变量)高斯函数形式如下,高斯函数又称"正态分布函数": μ是分布函数的均值(或者期望),sigma是标准差. 一维高斯分布函数的图形: 从图可知,以x=0为中心,x取值距离中心越近,概率密度函数值越大,距离中心越远,密度函数值越小. (二)二维高斯分布函数 二维高斯分布函数的形式: 特别说明,当变量x和y相互独立时,则相关系数ρ=0,二维高斯分布函数可以简化为: 二维高斯分布函数的图形:
随机推荐
- 谈谈Vue.js——vue-resource全攻略
- asp下删除Access数词库中的空记录的sql语句
- MySql查询时间段的方法
- Java字符串中删除指定子字符串的方法简介
- Java Web基于Session的登录实现方法
- 自动备份Oracle数据库
- ORACLE应用经验(2)
- js is_valid_filename验证文件名的函数
- CodeIgniter 完美解决URL含有中文字符串
- Linux在shell中自动生成1到100的数组方法(两种方法)
- matplotlib绘制符合论文要求的图片实例(必看篇)
- 十大最佳Ajax教程收集(图文)
- javascript 设置某DIV区域内的checkbox复选框
- 探索Emberjs制作一个简单的Todo应用
- php实现读取超大文件的方法
- Android特效之水波纹的实现
- 为IP查询添加GOOGLE地图功能的代码
- C#实现位图转换成图标的方法
- C# 设计模式之单例模式归纳总结
- 使用php方法curl抓取AJAX异步内容思路分析及代码分享