语法:
try:
#有可能发生语句块
except 错误类型1 as e:
#异常处理
except 错误类型2 as e2:
#异常处理2
…
finally:
#无论代码是否出现异常都会执行此语句块
执行过程:
先执行try下面的语句块,当语句出现异常的时候,会去excpt语句中进行错误匹配,
若匹配上则执行该except下面的语句,若匹配不上的则报错。
无论代码是否出现异常,都会执行finally下面的语句。
在使用异常的捕捉的时候需要注意,它不但可以捕捉该类型的错误,
还可以将其子类一网打尽。
错误调用栈:
若错误没有捕获,则会一直向上抛,直到抛给python解释器,python解释器
打印错误的堆栈信息然后退出。
因此查找错误的时候
第一:先看错误类型
第二:从下往上找[必须是你自己写的模块]
异常并不是凭空产生的,捕获的异常其实就是系统定义异常的类的一个实例。
在我们开发的过程中,我们不但可以捕获异常,我们也可自己自定义异常,主动抛出异常
在自定义异常的时候我们需要选好继承关系。
在必要的时候我们才进行自定义错误类型,若python 中存在已有的错误类型,我们
尽量使用python内置的错误类型。
常见的错误类型
- AttributeError 试图访问一个对象没有的属性
- IOError 输入/输出异常 无法打开文件
- IndentationError 语法错误,代码没有对齐
- keyError 访问的key字典中不存在
- NameError 使用一个还未赋值的对象的变量
- TypeError 传入对象类型与要求不合法
- ValueError 传入一个调用者不期望的值
import functools
import operator
‘’’
map(func,iter1)
参数一:函数 有且只有一个参数
参数二:可迭代对象
功能:将可迭代对象中的元素依次取出作用于func函数,
并将作用的结果作为迭代器返回。
‘’’
‘’’
创建一个函数实现将列表中的字符串转为int的功能
‘’’
def func(list1):
list2 = []
for x in list1:
list2.append(int(x))
return list2
‘’’
需求2;
使用map函数获取[1,4,9,16,…,10000]
‘’’
def func2(n):
print(n)
return n**2
‘’’
functools.reduce(func,iter1)
参数一:func 有且只有两个参数
参数二:可迭代对象
‘’’
if name == ‘main’:
list1 = [“1”, “2”, “233”, “22”, “45”]
list2 = [1, 2, 233, 22, 45]
# print(func(list1))
# print(list(map(int,list1)))
# print(list(map(lambda x:x**2,range(1,101))))
print(functools.reduce(operator.add,list2))
‘’’
对list1中的元素求和,使用一行代码实现
‘’’
res = functools.reduce(operator.add,map(int,list2))
print(res)
‘’’
求100!
‘’’
print(functools.reduce(lambda x,y:x*y,range(1,6)))