30.装饰器
装饰器也是一种闭包。在闭包函数内调用目标函数。
功能是不破坏目标函数原有的代码和功能的前提下,为目标函数增加新功能。
方式一:通过闭包的方式调用
def outer(func):
def inner():
print("睡觉了....")
func()
print("醒来了...")
return inner
def sleep():
import time
import random
num = 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 time
import random
num = random.randint(1, 5)
time.sleep(num)
sleep()