当前位置: 首页 > 编程日记 > 正文

wk_10.md

Python检测和处理异常

try-except语句

try-except语句定义了进行异常监控的一段代码,并且提供了异常处理的机制,下面是使用的语法:

try:# 可能抛出异常的语句,会一直执行,直到抛出异常。
except:# 异常处理额语句,当try快任意语句抛出异常时执行。

当try中执行的语句没有抛出异常则except中的语句是不会执行的:

try:print(float(23232))print('********')
except:print('except')
输出:
23232.0
********

当try中语句有多个时一旦执行到错误或异常的语句之后就是执行except中的语句并退出程序,而try中没有执行的语句则不会在被执行:

try:print(float(23232))print('********')print(float('dota'))print('-------')
except:print('except')
输出:
23232.0
********
except 

在try中定义的变量是可以在except中使用的:

try:a='DOTA'print(a)print(float(a))
except:print('except',a)
输出:
DOTA
except DOTA

通过制定类型对不同的异常做不同的处理:

try:float('aaaa')
except ValueError as e:print('aaaa value error. {}'.format(e))
except NameError as e:print('aaaa name error. {}'.format(e))
except Exception:print('error')
except:print('......')
输出:
aaaa value error. could not convert string to float: 'aaaa'
  • 异常语句从上往下执行,匹配到哪一条执行该条语句并停止匹配。
  • 如果Exception放在最上面则下面的具体性异常ValueError或者NameError是不会执行的。
  • 通常会把具体的异常放到上面,一般性的异常放到下面。
  • 当不带任何模式的时候,相当于default分支,会捕获所有未捕获的异常。

finally 子句

  • finally 语句总是会被执行,无论有没有抛出异常。所有的清理工作通常放到finally语句块里执行。
  • finally 在return 语句之后,函数返回之前执行。通常使用中不会再finally 里return。
def fn():try:1 / 0print('try')return 1except:print('except')return 2finally:print('finally')return 3print('fn')return 4print(fn())
输出:
except
finally
3

自定义异常

  • 自定义异常需要我们自己抛出,使用raise语句抛出。
  • raise 语句后面只能跟一个异常的实例。
class UserException(Exception):passclass SystemException(Exception):passdef div(x,y):try:return x/yexcept ZeroDivisionError:raise UserException('y must no be zero')try:div(5,0)
except UserException as e:print(e)
except SystemException as e:pass 
输出:
y must no be zero

在实际的编码中,我们应该在哪一层处理异常:

  • 通常在endpoint (指的一个边界)处处理异常。
  • 有替代方案时立即处理异常。使用替代方案。
  • 异常做为业务逻辑,不推荐使用。
  • 异常可以忽略。
  • 异常需要延后处理,需要立即处理,并暂存异常,以便延后处理。

导入模块

import 语句

import 语句用于导入模块,当模块导入后,就可以以模块名为命名空间,使用模块的变量,函数和类了。

In [1]: import osIn [3]: os.getcwd()
Out[3]: '/root'

from import 语句

可以把模块中指定的成员导入如到当前作用域,这就是部分导入,这种导入的命名空间也是部分的。

In [5]: from os import pathIn [8]: path.basename('/tmp')
Out[8]: 'tmp'In [9]: os.cpu_count()
Out[9]: 1In [10]: from os import cpu_countIn [11]: cpu_count()
Out[11]: 1

扩展的 import 语句(as)

当我们导入模块的名称重复或者名称过长的时候就可以使用as 来进行重命名。

In [15]: from posix import stat_result as posix_stat_resultIn [16]: from os import stat_result as os_stat_result

模块搜索路径

如果不做特殊修改,在用import导入模块是路径的先后顺序如下:当前目录-->标准库-->第三方库。

In [17]: import sysIn [18]: for path in sys.path:....:     print(path)....:     /root/.pyenv/versions/3.5.2/envs/pengfei/bin
/root/.pyenv/versions/3.5.2/lib/python35.zip
/root/.pyenv/versions/3.5.2/lib/python3.5
/root/.pyenv/versions/3.5.2/lib/python3.5/plat-linux
/root/.pyenv/versions/3.5.2/lib/python3.5/lib-dynload
/root/.pyenv/versions/3.5.2/envs/pengfei/lib/python3.5/site-packages
/root/.pyenv/versions/3.5.2/envs/pengfei/lib/python3.5/site-packages/IPython/extensions
/root/.ipython

由于python默认第一是从当前目录进行导入模块,所以一旦当前路径的模块名和系统模块名重名则不会导入系统模块。

包是一个有层次的文件目录结构,它定义了一个由模块和子包组成的Python应用程序执行环境。

  1. 一个目录下有__init__.py的时候,这个目录是一个模块(包),模块的内容写在__init__.py
  2. 这个目录下的其他文件,是这个模块的子模块。
  3. 导入子模块的时候会先导入父模块。
  4. 导入父模块不会自动导入子模块。
  5. 子模块可以使用from parent import child这样的形式导入,也可以使用import parent,child
  6. import parent.child这种导入方式,child必须是子模块。
  7. 同一模块下的子模块,可以使用相对导入,也可以使用绝对导入。

转载于:https://www.cnblogs.com/cuchadanfan/p/6718431.html

相关文章:

计算机网络实验五,计算机网络(实验五).docx

计算机网络(实验五).docx实验五一、实验内容在这个实验室里,我们将探讨ICMP 协议得几个方面由 Ping 项目产生得P 信息Tracer ute程序生成得C消息关于 CM 信息得格式与内容。在攻击这个实验室之前,我们鼓励您在第4 3 节中回顾 CMP 得内容 text1. 我们在微软 Win o s …

mac android 真机调试

1.已经安装好Androidstudio或者eclipse 2.下载配置好Android Sdk等 3.将android手机通过USB数据线连接Mac,打开终端输入system_profiler SPUSBDataType 4.找到对应设备的Product ID,并且复制出来 5.终端输入vi ~/.android/adb_usb.ini ,进入vi 6.输入i …

Python基础12-常用的内置函数

abs 取绝对值,数学上的绝对值 print(abs(-1)) all 接收一个可迭代参数。如果里面有一个False的元素,那么返回值就是False,否则返回True,类似逻辑“与”。如果可迭代参数本身为空,那么返回True。需要记住什么是Fals…

Andorid自定义attr的各种坑

本文来自网易云社区作者:孙有军在开发Andorid应用程序中,经常会自定义View来实现各种各样炫酷的效果,在实现这吊炸天效果的同时,我们往往会定义很多attr属性,这样就可以在XML中配置我们想要的属性值,以下就…

JS的Dom树小结

一【DOM树节点】DOM节点分为三大类:元素节点、文本节点、属性节点文本节点、属性节点,为元素节点的两个子节点;通过getElement系列方法,可以去到元素节点。二【查看节点】1、getElementById:通过ID获取唯一的节点&…

高考631能上什么好的计算机学校,2021年高考630分能上什么大学 可以报哪些学校...

高考结束后,最重要的事情就是如何填报志愿,高考630分能上什么大学?高考630分可以读哪些专业等等。小编下面就来为大家分享高考630分能上什么大学,供大家参考!!2021年高考630分能上什么理科大学高校名称专业批次平均分最高分中国科学技术大学…

CV00-01-CV基础理论

目录 CV的level和CV的方向 CV的level CV研究方向 CV应用方向 CV工程方向 CV的路线 CV比较好的会议 CV的平台、框架 认识几个CV的缩写 CV的level和CV的方向 CV的level Low Level,图像的基本操作;比如,图像的变换、像素操作、色彩等…

VC++关于UNICODE版本的开发

关于UNICODE版本的开发 代码转换方案 概述 在VC6.0中,相应的有一些宏来代替ANSI的函数、宏或数据类型,这些宏在ANSI编译条件中处理字符串为单字节,而在UNICODE中处理字符串为双字节,请在编写程序中请使用这些宏。 数据类型 表-1.1…

计算机基础办公软件应用技能,计算机一级计算机基础及 ms office 应用考些什么...

一、计基础知识1.计算机的发展、其应用领域。2.计算机中数据的表示、存储与处理。3.多媒体技术的概念与应用。4.计算机病毒的概念、特征、分类与防治。5.计算机网络的概念、组成和分类;计算机与网络信息安全的概念和防控。6.因特网网络服务的概念、原理和应用。二、操作系统的功…

ffmpeg 编译Android

环境 macOS 10.15.4 NDK 21.3.6528147 ffmpeg 4.2.3 1.执行sudo xcodebuild -license,防止编译的时候找不到一些文件报错 2.下载ffmpeg(4.2.3),解压后进入主目录,修改configure文件,找到 SLIBNAME_WITH_MAJOR$(SLIBNAME).$(LIBMAJOR) LI…

Python基础14-迭代器与生成器

目录 迭代器 官方文档对迭代器的解释 迭代器协议 基于迭代器协议的统一的for循环机制 生成器 官方文档对生成器的解释 生成器函数 生成器表达式 生成器用法举例 利用生成器用单线程实现生产者消费者问题模型 生成器只能遍历一次 迭代器 官方文档对迭代器的解释 Thi…

Android学习笔记进阶九之Matrix对称变换

网上很多的倒影特效实际上就是一个对称变换,在改变透明度即可。 Matrix对称变换包括很多种,有关于Y轴对称,关于X轴对称,关于y -x对称等等。 1 关于Y轴对称 [java] view plaincopy// 获取资源文件的引用res Resources res…

《计算机网络应用基础》模拟试卷(六),《计算机与网络应用基础知识1》模拟试卷...

《计算机与网络应用基础知识1》模拟试卷 (4页)本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦!9.9 积分《计算机与网络应用基础知识1》模拟试卷 一考生注意:1.本试卷共五道大题&…

ios架构篇-1 项目组织架构

关键字:项目组织架构 CocoaPod + 多项目级联 + xib + MVVM ProjectApp 项目app project Vendor 第三方.a、.framework库或源码 Resources 项目静态配置文件 Database 数据库文件夹,如CoreData Component 此项目特定的组件 Base 此项目…

Error 0162 - Setup data integrity check failure after updating BIOS via Thinkvantage

Start the computer and start pressing F1 and get into set up. In setup press F9 for default settings and press F10 for svae and exit. Problem solved. 转载于:https://www.cnblogs.com/gaoshaonian/p/9700130.html

CV00-02-CV基本操作1

目录 数字图像属性 opencv-python环境搭建 基本操作I Read in / Show out,读取、显示图像; Change color,修改颜色; Gamma Correction,伽马校正; Crop,切割; Histogram&…

链式表的按序号查找

本题要求实现一个函数,找到并返回链式表的第K个元素。 函数接口定义: ElementType FindKth( List L, int K );其中List结构定义如下: typedef struct LNode *PtrToLNode; struct LNode {ElementType Data;PtrToLNode Next; }; typedef PtrToL…

Codeforces Round #409 (Div. 2) C Voltage Keepsake(二分)

题意&#xff1a;有n(n<100000)个机器。。。第i个机器最开始有bi(1<bi < 100000)个单位的电量&#xff0c;机器可以储存的电量没有上限&#xff0c;启动后每秒消耗ai(1<ai<100000)个单位的电量,有一个充电器每秒可以充p(1<p<1e9)的电量。求保持所有机器电…

电子计算机的发展与应用教案,川教版信息技术七上第3课《电子计算机的发展与应用》教案1.doc...

川教版信息技术七上第3课《电子计算机的发展与应用》教案1整理双流县中学现代课堂教学分课时教学设计课题第3课 计算机的发展与应用课时1课型新课教学目标知识与能力&#xff1a;了解计算机的产生和发展&#xff0c;了解我国计算机的发展状况&#xff0c;计算机的特点与具体应用…

ios架构篇-2 国际化多语言

关键字:ios,国际化,多语言 实现功能: 1.默认采用系统语言 2.语言切换后实时生效 3.支持中英文,包含页面、app名称、系统默认权限弹框(如相机相册权限) 思路:app首次初始设置为系统语言,用户在app内切换语言时发送语言切换通知,刷新所有页面 1.project增加需要支持的…

Python基础15-函数闭包与装饰器

目录 装饰器概念 装饰器的实现 修改被装饰函数的代码&#xff08;非装饰器实现&#xff09; 修改被装饰函数的调用方式&#xff08;非装饰器实现&#xff09; 装饰器的实现&#xff08;不完整的实现level1&#xff09; 装饰器实现的语法糖&#xff08;不完整的实现level2…

python 全栈开发,Day132(玩具管理页面,控制玩具通讯录,基于请求的好友关系建立)...

先下载github代码&#xff0c;下面的操作&#xff0c;都是基于这个版本来的&#xff01; https://github.com/987334176/Intelligent_toy/archive/v1.5.zip 注意&#xff1a;由于涉及到版权问题&#xff0c;此附件没有图片和音乐。请参考链接&#xff0c;手动采集一下&#xff…

iOS技术篇1-CocoaPods

iOS技术篇1-CocoaPods 上一篇: 目录 下一篇&#xff1a;ios技术篇2-CoreData

计算机艺术未来发展趋势,计算机技术对现代艺术设计的影响

摘 要 在当今&#xff0c;计算机技术已经覆盖到了全球生活的各个领域&#xff0c;毫不夸张地说&#xff0c;计算机技术已经成为世界上最重要的技术之一。计算机技术对于某些行业和领域的冲击是巨大的&#xff0c;甚至是革命性的改变&#xff0c;它能够使很多的活动变得更为便捷…

【JZOJ5064】【GDOI2017第二轮模拟day2】友好城市 Kosarajo算法+bitset+ST表+分块

题面 在Byteland 一共有n 座城市&#xff0c;编号依次为1 到n&#xff0c;这些城市之间通过m 条单向公路连接。 对于两座不同的城市a 和b&#xff0c;如果a 能通过这些单向道路直接或间接到达b&#xff0c;且b 也能如此到达a&#xff0c;那么它们就会被认为是一对友好城市。 By…

Python基础16-模块与包基础01

目录 初识模块和包 Python常用的内置模块 关键字import和from import、from查找的路径 如何调用 __name__与模块执行 __name__的用法&#xff08;单元测试&#xff09; 初识模块和包 我们把功能相近或相关的py文件组成模块&#xff0c;这样分开写代码便于维护&#xff0c…

配置用户通过Telnet登录设备的身份认证(AAA本地认证)

背景信息 用户通过Telnet登录设备时&#xff0c;设备上必须配置验证方式&#xff0c;否则用户无法成功登录设备。设备支持不认证、密码认证和AAA认证三种用户界面的验证方式&#xff0c;其中AAA认证方式安全性最高。 采用AAA本地认证方式实现用户通过Telnet登录设备的身份认证&…

【自考】信息系统开发与管理(二)——章节详读

自考的第二阶段结束了&#xff0c;这一阶段是对书的详读过程。每章节读完&#xff0c;画一个导图。将其总结成一张网。织网的过程就是思考的过程。织网不断进行中……&#xff01;宏观方面&#xff1a;&#xff11;&#xff5e;&#xff13;章第一章 管理信息系统导论在研究一…

ios技术篇-CoreData

ios技术篇-CoreData 上一篇: iOS技术篇-CocoaPods 目录 下一篇&#xff1a;

中山大学计算机学院运动会,喜讯!我院获2019中大校运会教工组团体第二名

11月2日&#xff0c;中山大学2019年运动会在南校园举行&#xff0c;来自全校68个院系、附属医院、部门共3200余名师生参加比赛。由37名职工运动员组成的中山七院代表队参加教工组田径赛、趣味田径及球类等全部15项比赛&#xff0c;经过激烈角逐&#xff0c;最终以团体总分173分…