1 什么是闭包函数
- 1 本身是一个函数,参数是函数,返回值是函数
- 2 和java做对比,就是spring里面的aop的功能,aop就是功能的扩展,就是一个动态代理
总结:闭包函数就是aop功能,就是增强自己函数的功能
2 什么是语法糖
就是简化代码,和lamabda表达式一样,用更少的代码,实现更复杂的功能
3 什么是装饰器
之前是通过闭包的形式,对我们自己写的方法的功能进行扩展;
但是还得自己写对应的增强的方法,每次都得创建增强方法的对象,能不能和java的注解一样,我们只要在一个函数的上面写一个注解,那么就可以增强功能;
总结:就是通过语法糖对闭包进行简化
- 语法糖+闭包====装饰器
4 装饰器写法
@闭包函数名
5 装饰器例子
定义一个装饰器
def decorator1(main_func):
def wrapper(request,page): 这个参数需要和主函数的参数一样
if request.session.get('username'):
return main_func(request,page)
else:
return HttpResponse('login')
return wrapper
使用装饰器
@A
@B
def index(request):
return HttpResponse('index')
6 一个函数上有多个装饰器,先执行哪个
使用装饰器
@A
@B
def index(request):
return HttpResponse('index')
先执行B,之后执行A
也就是越靠近函数,越先执行