python--day12--装饰器精讲,进阶(y由于状态问题,这个学得很差)

1,完美的装饰器:加上装饰器@wrap(func)

wrap就是装饰器的意思

func.__name__拿到的是函数inner的名字,我希望拿到的是func的函数名,所以在函数inner前面加上@wraps(func)

带参数的装饰器

语法糖@timmer_out(flag)等价于timmer = timmer_out(flag)

 多个装饰器装饰函数

执行的结果(运行后的现象)

被多个装饰器装饰的函数的执行步骤:

被多个装饰器装饰的函数的执行步骤的原理解析:

原理详解:

 

三个装饰器装饰函数:

代码与上面的截图一致,@wrapper3和wrapper1一样,只是1变3,其余的都不变。

运行结果:

被装饰器有返回值的三层装饰:

三个装饰器中都得加上 ret = func()和return ret

 

posted @ 2018-10-08 15:15  莱茵河的雨季  阅读(49)  评论(0)    收藏  举报