错误处理
try:
有可能发生异常的语句块
except 错误类型1 as e :
异常处理1
except 错误类型2 as e :
异常处理2
。。。
finally
无论代码是否出现异常都会执行此语句块
执行过程:
先执行try下面的语句块,当语句出现异常的时候,会去except语句中进行错误匹配,若匹配上则执行该except下面的语句,若匹配不上则报错。
无论代码是否 出现异常,都会执行finally下面的语句。
在使用异常捕捉的时候需要注意:它不但可以捕捉该类型的错误,还可以将其子类一网打尽。
错误调用栈:
若错误没有捕获,则会一直向上抛,直到抛给python解释器,python解释器它会打印错误的堆栈信息然后退出。
因此查找错误的时候,
第一,先看错误类型
第二,从下往上找[必须是你自己写的模块]
import logging
自定义异常
异常并不是凭空产生的,捕获的异常其实就是系统定义异常的类的一个实例,在我们开发的过程中,我们不但可以捕获异常,我们也可以自己自定义异常,主动抛出异常,在自定义异常的时候,我们需要选好继承关系。
在必要的时候我们才进行自定义错误类型,若python中存在已有的错误类型,我们尽量使用python内置的错误类型。
常见的错误类型:
AttributeError 试图访问一个对象没有的属性
IOError 输入/输出异常,无法打开文件
python2 和 python3 的区别
至少记住6条
高阶函数
MapReduce 函数
主要应用于分布式中
map(func,iter1)
参数一:函数,有且只有一个参数
参数二:可迭代对象
功能:将可迭代对象中的元素依次取出作用于func函数,并将作用的结果作为迭代器返回。
import functools
functools.reduce(func,iter1)
参数一:func 有且只有两个参数
参数二:可迭代对象