高阶函数/处理异常

1.reduce函数 (计算累加和计算阶乘)

import functools
functools.reduce(add,[1,2,3,4,5])

15

functoosl.reduce(lambda x,y:x*y,range(1,11))

3628800

2.偏函数

对指定的函数进行二次包装,通常是将现有的函数部分参数预先绑定。类似于闭包。

import functools
square = functools.partial(pow, exp=2)
square(2)
4
square(3)
9

3.@wraps 装饰器

4.永久储存

5.路径处理

6.处理异常

try-except--(出错了执行except后内容,正确直接输出try结果)

try:
    1/0
except:
    print("出错了")

    
出错了

try:
    1/1
except:
    print("出错了")

    
1.0

except后面可以限定错误类型(除了因为0的错误可以不报错,其他依旧正常报错):

try:
    520+"haha"
except ZeroDivisionError:
    print("出错了")

    
Traceback (most recent call last):
  File "<pyshell#15>", line 2, in <module>
    520+"haha"
TypeError: unsupported operand type(s) for +: 'int' and 'str'

增加 as e ,输出错误的原因

try:
    1/0
except ZeroDivisionError as e:
    print(e)

    
division by zero

 可以用元组,包含几种错误的类型,下面代码不会报任何错

try:
    1/0
    520+"loce"
except (ZeroDivisionError, ValueError, TypeError):
    pass

try-except-else

try:
    1/0
except:
    print("逮到了")
else:
    print("没逮到")

    
逮到了
try:
    1/1
except:
    print("逮到了")
else:
    print("没逮到")

    
1.0
没逮到

try-except-finally

try:
    1/1
except:
    print("逮到了")
else:
    print("没逮到")
finally:
    print("逮没逮到都会吱一声~")

    
1.0
没逮到
逮没逮到都会吱一声~

finally通常用来做收尾的工作,比如关闭文件

try:
    f = open("fishc.txt", "w")
    f.write("I lovefishc")
except:
    print("出错了")
finally:
    f.close()

    
11

异常的嵌套

try:
    try:
        520+"fishc"
    except:
        print("内部异常")
    1/0
except:
    print("外部异常")
finally:
    print("收尾工作")

    
内部异常
外部异常
收尾工作

raise 语句(自爆异常)

-assert语句(只能引发一个叫做AssertionError的异常)

     通常用于代码调试

-利用异常来实现goto

try:
    while True:
        while True:
            for i in range(10):
                if i >3:
                    raise
                print(i)
            print("被跳过")
        print("被跳过")
    print("被跳过")
except:
    print("到这来了")

    
0
1
2
3
到这来了

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值