不修改函数代码但需要增加函数的功能时,可以使用装饰器。
闭包:
闭包就是一个函数,该函数能够读取其他函数内部的变量。
装饰器:
将函数传入一个闭包,该闭包返回一个函数(闭包),并将原函数名指向这个返回的函数(闭包)。
def set_func(func):
def call_func(*args, **kwargs): # 通用参数列表
return func(*agrs, **kwargs) # 需要加*,**拆包,否则为元组,字典
return call_func # 此处不需要加括号
@set_func # 等价于:test = set_func(test),test为一个引用重新指向了一个闭包
def test():
pass