当前位置: 移动技术网 > IT编程>脚本编程>Python > Python学习日记(九) 装饰器

Python学习日记(九) 装饰器

2019年08月10日  | 移动技术网IT编程  | 我要评论

公告栏素材,棒针编织包包,性早熟还能长高吗

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)

 

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网