6.装饰器
(1)闭包:函数里面嵌套函数
(2)装饰器应用场景:在执行函数之前或之后做某种操作
(3)装饰器调用:Python的语法糖:@装饰器函数名,用于定义函数之前
(4)装饰器特性:闭包结构,返回值为函数
(5)装饰器嵌套:有多个装饰器时从下到上调用,从上到下执行
(6)装饰器参数:原装饰器外层再加一层函数,用来接收装饰器参数
(7)装饰器常用函数:
a. functools.wraps(函数名):防止被装饰函数属性被改变(fun.__name__,fun.__doc__)
b. inspect.getcallargs(函数名,可变参数,关键字参数):被装饰函数实参类型不定时自动封装成字典.key值:形参,value值:实参
(8)总结:装饰器模板
a.
import functools
def #装饰器名称(fun):
@functools.wraps(fun)
def wrapper(*args, **kwargs):
# 函数执行前的操作
temp = fun(*args, **kwargs)
# 函数执行后的操作
return temp
return wrapper
b.
import functools
def 装饰器名称(fun):
@functools.wraps(fun)
def wrapper(*args, **kwargs):
if #条件判断:
temp = fun(*args, **kwargs)
return temp
else:
#报错
return wrapper
c.
import functools
def #装饰器名称(#装饰器参数):
def inner(fun):
@functools.wraps(fun)
def wrapper(*args, **kwargs):
# 函数执行前的操作
temp = fun(*args, **kwargs)
# 函数执行后的操作
return temp
return wrapper
return inner