一、闭包
1、闭包的概念:
闭包是一个函数,可以访问到另一个函数的作用域。
2、闭包的特点:
1. 存在内外层函数嵌套的情况
2. 内层函数引用了外层函数的变量或者参数(自由变量)
3. 外层函数把内层的这个函数本身当作返回值进行返回,而不是返回内层函数产生的某个值
4、闭包可以访问到父级函数的变量,且该变量不会销毁
二、装饰器
1、概念
装饰器就是提供了一些额外的功能
注意:多个装饰器的运行方式 是由下到上
2、代码
def outfunc(func):
def infunc(*args,**kwargs):
func(*args,**kwargs)
print("日志纪录")
return infunc
@outfunc # 相当于 func1 = outfunc(func1)
def func1():
print("使用功能1")
三、wraps装饰器
functool.wraps
可以将原函数对象的指定属性赋值给包装函数对象,默认有module、name、doc,或者通过参数选择。
from functools import wraps
def outfunc(func):
@wraps(func)
def infunc(*args,**kwargs):
func(*args,**kwargs)
print("日志纪录")
return infunc
@outfunc # 相当于 func1 = outfunc(func1)
def func1():
print("使用功能1")