• 装饰器1(被装饰函数不带参数)


    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    import time
    
    def wrapper(func):
        def deco():
            start = time.time()
            func()
            stop = time.time()
            print("the func run %s"%(stop - start))
        return deco
    
    #这里的【@wrapper】等于【test1 = wrapper(test1)】,wrapper(test1),将test1函数以实参的形式传递给wrapper函数,wrapper函数将会把deco函数的内存地址作为返回值返回给变量test1,而此时test1变量所指引的值相当于是deco函数的内存地址,如果test1()则将会执行deco函数
    @wrapper  
    def test1():
        time.sleep(3)    
        print("in the test1...")
    @wrapper
    def test2():
        time.sleep(3)    
        print("in the test2...")
    test1()
    test2()

    如果被修饰函数存在返回值呢,该怎么搞....

    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    import time
    
    def wrapper(func):
            def deco():
                    start = time.time()
                    a = func() #将test1函数的执行结果(返回值)赋予a变量名
                    stop = time.time()
                    print("the func run %s"%(stop - start))
                    return a
            return deco
    
    #这里的【@wrapper】等于【test1 = wrapper(test1)】,wrapper(test1),将test1函数以实参的形式传递给wrapper函数,wrapper函数将>会把deco函数的内存地址作为返回值返回给变量test1,而此时test1变量所指引的值相当于是deco函数的内存地址,如果test1()则将会执>行deco函数,
    @wrapper
    def test1():
            time.sleep(3)
            print("in the test1...")
            return ("i am fine,thank you!!!")
    
    print(test1())
    在你说话之前,先听;在你回应之前,先想;在你消费之前,先挣;在你退出之前,先试
  • 相关阅读:
    并发与并行
    连接221.5.250.163的16000端口问题(转载)
    删除瑞星 江民 卡巴 360文件夹下的MFC42.DLL
    pif文件
    超级浓缩diy.asp上传小马
    删除瑞星 江民 卡巴 360文件夹下的MFC42.DLL
    超级浓缩diy.asp上传小马
    一个怪异的病毒Backdoor.RWX.2005.hy(转载)
    一个怪异的病毒Backdoor.RWX.2005.hy(转载)
    修改加速软件之本地分流(突破电信上网限制)
  • 原文地址:https://www.cnblogs.com/sunweigogogo/p/7617048.html
Copyright © 2020-2023  润新知