python3异常处理和约束
2022-02-20 22:46:25 3 举报
AI智能生成
python3异常处理和约束整理
作者其他创作
大纲/内容
异常处理<br>
<ul><li>异常和错误</li></ul>
<ul><li>错误分成哪两种?</li></ul>
语法错误和逻辑错误
<ul><li>什么是异常?</li></ul>
异常就是程序运行时发生错误的信号,在python中错误触发的异常如下
<ul><li>python中的异常种类?</li></ul>
<font color="#ff99cc"><b>AttributeError</b></font>: 试图访问一个对象没有的属性,比如foo.x,但是foo没有属性x。
<b><font color="#ff99cc">IOError</font></b>: 输入/输出异常;基本上是无法打开文件。
<font color="#ff99cc"><b>ImportError</b></font>: 无法引入模块或包;基本上是路径问题或名称错误。
<font color="#ff99cc"><b>IndentationError</b></font>: 语法错误(的子类) ;代码没有正确对齐。
<font color="#ff99cc"><b>IndexError</b></font>:下标索引超出序列边界,比如当x只有三个元素,却试图访问x[5]
<font color="#ff99cc"><b>KeyError</b></font>: 试图访问字典里不存在的键。
<font color="#ff99cc"><b>KeyboardInterrupt</b></font>: Ctrl+C被按下。
<font color="#ff99cc"><b>NameError</b></font>: 使用一个还未被赋予对象的变量。
<font color="#ff99cc"><b>SyntaxError</b></font>: Python代码非法,代码不能编译(个人认为这是语法错误,写错了)。
<b><font color="#ff99cc">TypeError</font></b>: 传入对象类型与要求的不符合。
<font color="#ff99cc"><b>UnboundLocalError</b></font>: 试图访问一个还未被设置的局部变量,基本上是由于另有一个同名的全局变量,导致你以为正在访问它。
<font color="#ff99cc"><b>ValueError</b></font>: 传入一个调用者不期望的值,即使值的类型是正确的。
<b>其他类型:</b>
<ul><li>异常处理</li></ul>
<ul><li>什么是异常处理?</li></ul>
异常处理
<ul><li>为什么要进行异常处理?</li></ul>
通过异常处理机制来增强你程序的健壮性与容错性。
<ul><li>如何进行异常处理?</li></ul>
<ul><li>使用 if 表达式</li></ul>
使用 if 表达式处理异常
<ul><li>使用 try...except</li></ul>
part1: 基本语法
part2: 单个指定异法处理
part3: 多分支异法处理
part4: 万能异常 Exception
part5: 异常的其他结构
part6: 主动触发异常
part7: 自定义异常
part8: 断言
part9: traceback
<ul><li>try..except方式较if方式的好处</li></ul>
try..except方式好处
<ul><li>什么时候用异常处理?</li></ul>
try..except方式多了,会导致你的代码可读性变差,只有在有些异常无法预知的情况下,才应该加上try...except,其他的逻辑错误应该尽量修正。
异常的继承关系
约束<br>
什么是约束?<br>
约束是对子类进行的约束
如何实现约束?
通过抛异常实现
1、在父类中给出一个方法。这个方法中什么都不写。就抛异常:raise NotImplementError()
2、在子类中把上述的方法进行重写。(重写:子类重新定义父类中的方法)
通过抽象类和抽象方法实现
from abc import ABCMeta, abstractmethod
抽象类:<br> 语法:类(metaclass=ABCMeta)<br> 概念: 如果类中包含了抽象方法。这个类一定是抽象类。<br> 特点: 抽象类一般不创建对象。<br> 抽象类中可以存在正常方法。
抽象方法:抽象方法不用给出方法体。写个pass就行了。(子类继承父类时必须重写此方法)
实现约束有何益处?
通过约束能够清楚知道:"没有实现的错误"。
MD5加密
如何实现MD5加密?
引入模块 hashlib<br> 1 创建md5对象<br> 2.把加密信息交给md5对象<br> 3.获取密文
MD5普通加密<br>
获取密文
密文解密
MD5多重加密<br>
多重加密获取密文1
多重加密密文解密1
多重加密获取密文2
多重加密密文加密2复杂度过高无法解密
日志处理
一.日志相关概念
1.日志的作用
<ul><li>程序调试</li></ul>
<ul><li>了解软件程序运行情况,是否正常</li></ul>
<ul><li>软件程序运行故障分析与问题定位</li></ul>
<ul><li>如果应用的日志信息足够详细和丰富,还可以用来做用户行为分析</li></ul>
2.日志的等级
3.日志字段信息与日志格式
4.日志功能的实现
<ul><li>Python自身也提供了一个用于记录日志的标准库模块--logging</li></ul>
<ul><li>第三方库来提供日志操作功能,比如:log4j,log4php等</li></ul>
二.logging模块简介
1. logging模块的日志级别
2. logging模块的使用方式介绍
三.使用logging提供的模块级别的函数记录日志
1.最简单的日志输出
2. 那么问题来了
3. logging.basicConfig()函数说明
4. logging模块定义的格式字符串字段
5.经过配置的日志输出
6. 其他说明
实例<br>
四.logging模块日志流处理流程
1. logging日志模块四大组件
2. logging日志模块相关类及其常用方法介绍
<ul><li>Logger类</li></ul>
<ul><li>Handler类</li></ul>
<ul><li>Formater类</li></ul>
<ul><li>Filter类</li></ul>
3. logging日志流处理流程
详解
五.使用logging四大组件记录日志-实例
1. 需求
2. 分析
3. 代码实现
六.配置logging的几种方式
《python之配置日志的几种方式》
七.向日志输出中添加上下文信息
《Python之向日志输出中添加上下文信息》
<< Logging CookBook >>
八.参考文档
0 条评论
下一页