2. 没有参数的函数的装饰器

本节目标:

  1. 在装饰器内部调用原函数。
  2. 能够为函数提供附加的功能。
  3. 理解装饰器包装函数的原理。

示例

使用装饰器返回的函数内回调被装饰函数。

def replace_deco(fn):
    def take_a_holiday():
        print('购机票!')
        fn()
        print('度假!')
    return take_a_holiday

@replace_deco
def do_somthing():
    print('上班!')

do_somthing()  # ???

上述程序 形参fn绑定的是被装饰函数do_somthing。

do_somthing 重新绑定了 take_a_holiday 函数,在调用do_somthing时,会在调用fn的前后执行相应的打印,从而实现了对原函数加“壳”的操作。