Python之异常处理、调用栈、自定义异常、高阶函数map与reduce概念。

本文介绍了Python的异常处理机制,包括try-except-finally的使用和错误调用栈的分析。同时,讲解了如何自定义异常,并强调在适当情况下利用Python内置错误类型。此外,还详细阐述了高阶函数map和reduce的概念和用法,map函数用于将函数作用于可迭代对象的每个元素,而reduce函数则是对序列进行累积运算。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

异常处理

语法:

try:
    #有可能发生语句块
except 错误类型1 as e:
    #异常处理
except 错误类型2 as e2:
    #异常处理2
    ......
finally:
    #无论代码是否出现异常都会执行此语句块

执行过程:
先执行try下面的语句块,当语句出现异常的时候,会去excpt语句中进行错误匹配,
若匹配上则执行该except下面的语句,若匹配不上的则报错。
无论代码是否出现异常,都会执行finally下面的语句。

在使用异常的捕捉的时候需要注意,它不但可以捕捉该类型的错误,
还可以将其子类一网打尽。


错误调用栈

若错误没有捕获,则会一直向上抛,直到抛给python解释器,python解释器
打印错误的堆栈信息然后退出。
出错的时候,要分析错误的调用栈的信息,这样才能定位错误
因此查找错误的时候
第一:先看错误类型
第二:从下往上找[必须是你自己写的模块]


例:记录错误

import logging
import time

def func1(a,b):
    return a/b

def func2(a,b):
    return func1(a,b)

def main(a,b):
    return func2(a,b)

if __name__ == '__main__':
    try:
        print(main(1,0))
    except Exception as e:
        logging.exception(e)
    print("end")
    time.sleep(30)
    print("over")

自定义异常

异常并不是凭空产生的,捕获的异常其实就是系统定义异常的类的一个实例。
在我们开发的过程中,我们不但可以捕获异常,我们也可自己自定义异常,主动抛出异常
在自定义异常的时候我们需要选好继承关系。
在必要的时候我们才进行自定义错误类型,若python 中存在已有的错误类型,我们
尽量使用python内置的错误类型。

常见的错误类型

  • AttributeError :试图访问一个对象没有的属性
  • IOError :输入/输出异常 无法打开文件
  • IndentationError :语法错误,代码没有对齐
  • keyError : 访问的key字典中不存在
  • NameError :使用一个还未赋值的对象的变量
  • TypeError :传入对象类型与要求不合法
  • ValueError :传入一个调用者不期望的值

高阶函数

map函数语法

map(func,iter1)

参数一:函数 有且只有一个参数
参数二:可迭代对象

功能:将可迭代对象中的元素依次取出作用于func函数,
并将作用的结果作为迭代器返回。


reduce函数

语法:reduce(func,lsd)

参数1为函数,参数2为列表

功能:一个函数作用在序列上,这个函数必须接受两个参数,reduce把结果继续和序列的下一个元素累计运算

reduce(f,[1,2,3,4])等价于f(f(f(1,2),3),4),类似于递归


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值