003 装饰器

1、

 

 2、1个装饰器

需求:调用 f1 前,需要先验证

实现1:

 

 实现2:

实现1需要进入 f1 函数内部修改原代码,这不符合封闭原则

 

 实现3:

实现2好是好,但用起来有点费劲,python对此提供了一种简便的手段,即装饰器

 

 3、2个装饰器

 最终返回的结果是?

 

 

 

 装饰器是从最里面开始装的,因为装饰器装的是函数,如果是从最外面即@makeItalic开始装此时还没有函数可以去装

@makeBold => test3 = makeBold(test3)

 

 4、装饰器执行的时间

 

 

 

 装饰的时候倒着装,你将来真正调用的时候还是从上往下调的

 

5、使用装饰器对无参数函数进行装饰

 

6、使用装饰器对有参数函数进行装饰 

怎么对有参数的函数进行装饰

 

 如果按照无参数的函数的方式去装饰,会抛出异常

 

 

 

 7、装饰器对带有返回值的函数进行装饰

对 test 函数进行装饰,注意 test 函数有返回值

 

 

 

 

 8、通用装饰器

有无返回值、有无参数都适合的装饰器

 

 

 9、带有参数的装饰器

 

 需要怎么修改呢?

 

posted @ 2018-02-25 23:56  有山有水有鬼  阅读(89)  评论(0编辑  收藏  举报