装饰器

装饰器 = 高阶函数+闭包+函数嵌套
高阶函数定义:
函数接收的参数是函数名,或者函数的返回值是一个函数名
函数嵌套:
一个函数内,在重新定义一个函数
闭包:
其实就是作用域的另外一种名词,当前函数调用变量时,本地没有就找
上级。上级函数包含下级函数

def wapper(func):
    def inner(x,y):
        print(x+y)
        func(x,y)
    return inner


@wapper                  
def foo(x,y):
    print(x-y)

1,将foo内存地址传递到wapper(foo),func接收foo内存地址

2.返回inner内存地址,foo接收   foo = inner

3.执行foo(3,2),就是执行inner(3,2),inner里面的func其实值接收的最开始传递进来的foo的内存地址

 

 

装饰器加参数

import time

def timmer(func):
    def con(*args, **kwargs):
        start_time = time.time()
        res = func(*args, **kwargs)
        stop_time = time.time()
        print('函数运行时间是:%s' % (stop_time - start_time))
        return res
    return con
@timmer
def test(name, age,sex,money):
    time.sleep(3)
    print('函数运行完毕')
    print(f'name是{name},年纪是{age},性别是{sex},存款是{money}')
    return '这是test返回值'


res = test('zheng', age=18, sex='')

print(res)

 

posted on 2018-12-21 00:05  一群羊  阅读(121)  评论(0)    收藏  举报

导航