装饰器也是一种闭包。在闭包函数内调用目标函数。
功能是不破坏目标函数原有的代码和功能的前提下,为目标函数增加新功能。
方式一:通过闭包的方式调用
def outer(func):def inner():print("睡觉了....")func()print("醒来了...")return innerdef sleep():import timeimport randomnum = random.randint(1, 5)time.sleep(num)func = outer(sleep)
func()
方式二:使用注解的方式调用
def outer(func):def inner():print("睡觉了....")func()print("醒来了...")return inner@outer
def sleep():import timeimport randomnum = random.randint(1, 5)time.sleep(num)sleep()