定义
本质就是函数,功能 为其它函数添加附加功能
原则:
- 不修改被修饰函数的源代码
- 不修改被修饰函数的调用方式
装饰器的知识储备
装饰器 = 高阶函数+函数嵌套+闭包
这里面要明确高阶函数的定义
1 import time#导入时间模块儿 2 def foo(func): # func = test 3 def bar(*args,**kwargs): 4 start_time = time.time() 5 res=func(*args,**kwargs) # 这里就是在运行test() 赋予变量 6 stop_time = time.time() 7 print("狼来了的时间为%s" %(stop_time-start_time)) 8 return res # 返回test()的值 9 return bar 10 @foo # @foo 相当于 test=foo(test) 调用foo函数并将test传给func 11 def test(name,age): 12 time.sleep(1) 13 print("名字叫%s年龄为%s的狼来了" %(name,age)) 14 return "村里的羊被吃了" 15 ret = test("灰太狼",age=10) # test()意在运行bar() # 输出res的返回值 16 print(ret)