Python学习日记(九) 装饰器 – Python量化投资

Python学习日记(九) 装饰器

1.import time

  a.time.time()

  获取到当前的时间,返回值为浮点型


import time
print(time.time())  #1565422783.6497557


  b.time.sleep()

  让程序执行到这个位置暂停一会


import time
start = time.time()
time.sleep(0.5)
print('hello world!')
end = time.time()
print(end - start)  #0.5000286102294922


 

2.装饰器

开发原则:开放封闭原则

装饰器的作用:在不改变原函数的情况下,在函数的前后添加功能

装饰器的本质:闭包函数

 

当想要知道一个程序执行的时间


import time
start = time.time()
time.sleep(0.5)
print('hello world!')
end = time.time()
print(end - start)  #0.5000286102294922


再将里面的功能单独拉出来变成一个函数


import time
def func():
    time.sleep(0.5)
    print('hello world!')
def timer(func):
    start = time.time()
    func()
    end = time.time()
    print(end - start)
timer(func)     #hello world!
                #0.5000286102294922


将timer变成一个简单的装饰器


import time
def func():                 #被装饰的函数
    time.sleep(0.5)
    print('hello world!')
def timer(func):            #装饰函数
    def inner():
        start = time.time()
        func()
        end = time.time()
        print(end - start)
    return inner            #回传inner函数的内存地址
get_inner = timer(func)     #后者得到的是inner的内存地址再赋值给get_inner
get_inner()                 #hello world!
                            #0.5000286102294922


执行步骤:

开放封闭原则:开放指的是对扩展开放,封闭指的是对修改封闭

语法糖:@装饰器函数名  可以替代下面的写法

装饰带参数函数的装饰器

装饰带有多个参数的函数装饰器

总结:装饰器的模板

 


import time
def wrapper(f):
    def inner(*args,**kwargs):
        #在被装饰函数之前要做的事
        res = f(*args,**kwargs)
        #在被装饰函数之后要做的事
        return res
    return inner
@wrapper
# func = wrapper(func)
def func():            #被装饰的函数
    return
ret = func()
print(ret)


 

https://www.cnblogs.com/Fantac/p/11332275.html

「点点赞赏,手留余香」

    还没有人赞赏,快来当第一个赞赏的人吧!
0 条回复 A 作者 M 管理员
    所有的伟大,都源于一个勇敢的开始!
欢迎您,新朋友,感谢参与互动!欢迎您 {{author}},您在本站有{{commentsCount}}条评论