4、python基础——装饰器

在这里插入图片描述

def log(func):
    def my_time(a,b): 
        def wrapper(*args): 
            print(time.asctime())
            s_time = time.time()
            temp = func(a,b)  
            e_time = time.time()
            print(e_time-s_time)
            return 'OK'
        return wrapper()
    return my_time


@log
def f(x,y):
    print("执行程序")
    time.sleep(1)
    print(x+y)

n = f(1,2)
print(n)
def my_time(func):
    def wrapper():
        s_time = time.time()
        func()
        e_time = time.time()
        print(e_time-s_time)
    return wrapper

#运行的时候的是脱衣服,先脱外层,再脱内层
#@log  #先装饰,日至  外层衣服
@my_time  #后装饰,性能  内层衣服
def f():
    print('i am f')
    time.sleep(3)

f()
运行结果:
i am f
3.0001718997955322
#闭包:内层函数访问外层函数的变量
#装饰器:本质是个函数
#作用:用来装饰其他函数,给其他的函数附加新的功能
#原则:1、不能修改被装饰的函数的源代码
#         2、不能改变被装饰函数的调用方式

#应用场景:插入日至,性能测试,处理事务
#例:测试函数的运行时间
import time

def f():
    print('i am f')
    time.sleep(2)

def new_f():
     s_time = time.time() #开始时间
     f()
     e_time = time.time() #结束时间
     print('耗时:{}'.format(e_time-s_time))

new_f()

猜你喜欢

转载自blog.csdn.net/weixin_43213658/article/details/85079295