day4装饰器 decorator

今天学了一个有点难度的东西:那就是装饰器
装饰器:本质是函数,(装饰其他函数)就是为其他函数添加附加功能。
原则:1.不能修改被装饰函数的源代码
2.不能修改装饰函数的调用方式
实现装饰器需要以下知识:
1.函数即“变量”

2.高阶函数:a.把一个函数名当做实参传给另一个函数(在不修改被装饰函数源代码的情况下为其添加功能)
b.返回值中包含函数名(不修改函数的调用方式)
3.嵌套函数

装饰器 = 高阶函数 + 嵌套函数

import time
def timer(func): #timer(test1) func=test1
    def deco(*args,**kwargs):
        start_time = time.time()
        func(*args,**kwargs) #run test1
        stop_time = time.time()
        print("the func run time is %s"%(stop_time-start_time))
    return deco

@timer #test1=timer(test1)
def test1():
    time.sleep(2)
    print("in the test1")
@timer# test2=timer(test2) = deco
def test2(name,age):
    print("test2:",name,age)

test1()
test2("yww",21)

day4装饰器 decorator

上一篇:如何使用可选参数构建装饰器?


下一篇:python – 动态生成字典键[复制]