闭包
函数基本概念
闭包
闭包就是一种函数内部另定了另外一个函数的形式,定义闭包要满足三个条件
闭包的作用
nonlocal
装饰器
装饰器的是语法糖的一种
使用类或闭包来实现装饰器
装饰器的功能
在已有函数功能基础上,为已有函数添加额外的功能
装饰的使用
@xxx
装饰器的原理
如有定义如下:
@wrapper
def show():
pass
装饰器展开的原理为:
show = wrapper(show)
万能装饰器
def setFunc(func):
def wrapper(*args, **kwargs): # 接收不同的参数
print('wrapper context')
return func(*args, *kwargs) # 再原样传回给被装饰的函数
return wrapper
类装饰器
1.通过 __init__方法和 __call__方法,利用仿函数的特性实现类装饰器
classTest(object):
# 通过初始化方法,将要被装饰的函数传进来并记录下来
def__init__(self, func):
self.__func= func
# 重写 __call__ 方法来实现装饰内容
def__call__(self, *args, **kwargs):
print('wrapper context')
return self.__func(*args, **kwargs)
2.被类实现的装饰器进行装饰后,被装饰的函数引用指向了装饰器类的对象。
执行函数时,实际是在时行对像的仿函数形式调用
多个装饰器装饰一个函数
装饰器传参