叠加多个装饰器与有参数的装饰器。
叠加多个装饰器:
加载顺序为从下到上,执行顺序为从上到下。
加载顺序:Index 作为实参给到outter3,outter3(index)的返回结果wrapper3再给到outter2,outter2(wrapper3)的返回结果wrapper2再给到outter1,outter1(wrapper2)返回的结果为wrapper1。(自下而上。)
再令index=wrapper1(指向最上面的@()调用一次后的地址,也就是指向wrapper1的地址)
执行顺序:
此时调用index(),实际调用的是outter1( wrapper2 )里面的wrapper1,执行到,func()时候,func此时为wrapper2,outter2中执行wrapper2,依次类推。
有参数的装饰器:
针对有参数的装饰器,需要在外出在嵌套一个函数,这样做的目的是为了遵循装饰器的原则。需要几个参数,就在装饰器外再嵌套几层,通过一层的传入。
三元表达式: res=x if x>y else y
列表生成式: [i for i in range(10)]
[i for i in range(10) if i>4]
字典生成式:
匿名函数 lambda x : x**2 x的二次方作为返回值。
Sorted 排序 l=[4,2,3]
L_new=sorted(l,reverse=True)