异常处理与模块
- 了解异常
- 模型
- try:
可能发⽣错误的代码
except:
如果出现异常执⾏的代码
- try:
- 常规异常
-
可以公式来判断异常 判断结束后,后面的代码也可以运行
- 为了保证程序的流畅性,可以在异常执行下,加入可能正确的补救操作
-
- 捕获异常
- 模型
-
try:
可能发⽣错误的代码
except 异常类型:
如果捕获到该异常类型执⾏的代码
-
- 打印报错,可以看到报错的类型,在异常类型中添加后
- 如果错误类型正确就输出错误类型判断的指令
- 如果异常类型,还是会报错
- 如果多个错误,程序从上到下读取,如果先判断的错误类型,有正确类型不会报错 如果先判断的错误类型,没有对应类型,就会直接报错,不会继续判断剩余的类型是否有对应的错误类型。
- 错误类型可以增加
- 可能有些错误不太清楚类型,但也不想程序报错,可以用Exception类型,大部分错误类型都属于Exception
- 但是会提示应用范围过宽
- BaseException和Exception一样,用在异常类型时,会显示应用范围广
- 为了获取异常信息,可以用判断异常类型
- (as 是重命名 )用as把异常类型重命名为一个变量,最后会显示 通常可以用Exception 常规错误的基类加变量的方式,并输出变量来获取错误类型
- 可以充当if对错误判断语句,进行编程
- else异常
代码当没有发生异常,就执行里面的代码
- finally异常
- 不管报没报错,都会执行
- 就算不写finally:直接写内容也会执行
- 自定义异常
- raise Exception(' ') 抛出异常 运行后输出异常是括号内的内容
- Exception 常规错误的基类
- 例子:密码长度
- 首先,建立一个长度不符合的类,让其属于 常规错误Exception的子类
- 其次,用一个变量接收输入的数据
- 第三,初始化定义
- 第四,输出对象内容
- 第五,对长度进行判断,如果不符合要求就抛出自定义异常,且自定义异常类要带有变量
- whiled的判断能让循环一直进行直到输出对的内容
- 断言 assert
- 对的就不报错
- 错的就报错,输出内容是逗号后面的内容
- debug 调试
- 可以一步一步执行发现程序的运行过程
- 右键就可以进入调试模式
- 点击行列,出现小红点,为选定调试的内容,进入调试后,会运行到最终要调试的行
- 对变量可以监视、调整、控制
- 对每一步的运行,也可以进入进入函数或者循环
- 如果中间涉及其他变量,也会随着每一步的变化显示不同内容,步过或者步入运行
- 还可以单步执行代码
- 跳出循环
- copy 复制
- 基本 简单变量用=,实际就是一个赋值的过程,不算复制 例如: a=1,b=a
- 浅复制 变量.copy ()
- 对复制内容操作时,不影响原数值内容
- 其实浅复制就是把原内容复制到新的内存地址中,操作时不会对原内容有影响
-
copy浅复制 只能复制表层的数据
在字典的嵌套中,就能发现浅复制的特点
对于字典的复制是第一层,对于第二层的字典内容,数据还是指向同一个内存地址- 在字典的嵌套中,就能发现浅复制的特点
- 对于字典的复制是第一层,对于第二层的字典内容,数据还是指向同一个内存地址
- 深复制 from copy import deepcopy deepcopy (变量)
- 深复制可以把变量内部所有数据都另存到其他内存地址
-
from copy import deepcopy as abc 别名 在函数中可以用别名替代函数的使用
- 迭代器
- 选一个列表,魔法方法__dir查找可以使用的类型
- 发现有__iter,表明变量是可以迭代的
- 如果想看__iter下的可使用类型,一般有\__next的功能
- 可以打印下一个
- 连着打印,连着输出
- 如果多打印就报错了
- 报错StopIteration,会停止迭代
- 能直接调用next是迭代器,不能直接调用的就是序列,序列
标签:02,变量,错误,编程,第八,复制,报错,类型,异常 From: https://www.cnblogs.com/qipaxiaopao/p/17011526.html