异常处理与高阶函数

语法:
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)))

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值