叠加多个装饰器与有参数的装饰器。

叠加多个装饰器:

     加载顺序为从下到上,执行顺序为从上到下。

 

加载顺序:Index 作为实参给到outter3outter3(index)的返回结果wrapper3再给到outter2,outter2(wrapper3)的返回结果wrapper2再给到outter1outter1(wrapper2)返回的结果为wrapper1。(自下而上。)

再令index=wrapper1(指向最上面的@()调用一次后的地址,也就是指向wrapper1的地址)  

 

执行顺序:

此时调用index(),实际调用的是outter1( wrapper2 )里面的wrapper1,执行到,func()时候,func此时为wrapper2outter2中执行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)

posted @ 2018-11-30 21:05  学习汪  阅读(277)  评论(0编辑  收藏  举报