装置器:
概念:就是一个闭包,把一个函数当做参数返回一个替代版的函数
本质:就是一个返回函数的函数
eg: def function1():
print(“sunck good”)
def outer(m):
print(“***”)
m()
function1 = outer(functiion1) 返回*** sunck good
通用装置器:
def outer(func):
def inner(*args,**kwargs)
#添加修饰的功能
func(*args,**kwargs)
return inner
偏函数
eg: print(int(“1010”,base = 2))
eg: import functools
int3 = functools.partial(int,base = 2)
print(int3(“1010”)) 返回10
异常处理:
try...except...else
作用:用来检测try语句块中的错误,从而让except语句捕获错误信息并处理
格式:
try:
语句t
except 错误码 as e:
语句1
except 错误码 as e:
语句2
...
except 错误码 as e:
语句n
else:
语句n+1 #else可有可无
逻辑:
当程序执行到try...except...else语句时
1、若当try“语句t”执行出现错误,会匹配第一个错误码,如果匹配上就执行对应的“语句”
2、若当try“语句t”执行出现错误,没哟匹配的异常,错误将会被提交到上一层的try语句,或者到程序的最上层
3、若当try“语句t”执行没有出现错误,执行else下的“语句n+1”
eg: try:
print(3/0)
except NameError as e:
print(“没有该变量”)
except ZeroDivisionError as e:
print(“除数为0”) 返回 除数为0
eg: try:
print(num)
except ZeroDivisionError as e:
print(“除数为0”)
except NameError as e:
print(“没有该变量”) 返回 没有该变量
使用except带有多种异常
eg: try:
pass
except (ZeroDivisionError ,NameError)as e:
print(“出现异常”)
一般使用except而不使用任何的错误类型
eg: try:
print(num)
except :
print(“程序出现异常”) 返回 程序出现异常
特殊:
- 错误其实是class(类)所有的错误都继承自BaseException,所以在捕获时,它捕获了该类型的错误,还把类一网打尽
- 跨越多层调用,任然能捕获到子类中的错误
- try..except...finally
格式:try:
语句t
except 错误码 as e:
语句1
except 错误码 as e:
语句2
...
except 错误码 as e:
语句n
finally:
语句n+1
作用:语句t无论是否有错误都将执行最后的语句n+1
断言:
assert()
eg: def func(num,div):
assert(div != 0),”div不能为0 ”
return num / div
print(10,0) 返回 报错AssertionError:div不能为0
print(10,0) 返回 5.0