整理Python装饰器

来源:互联网 发布:数据库事务是什么 编辑:程序博客网 时间:2024/06/05 22:57
需要理解的三个方面:
1、函数即"变量“
2、高阶函数
    a 把函数名当做实参传给另一个函数(在不修改被装饰函数源代码的情况下进行功能扩展)
    b 返回值中包含函数名(不修改函数的调用方式)

3、嵌套函数:函数里面用def声明另一个函数 


高阶函数+嵌套函数=》装饰器

一、未使用装饰器:

#!/usr/bin/env python# -*- coding:utf-8 -*-import timedef timmer(func):    def deco(*args,**kwargs):        time_start = time.time()        func(*args,**kwargs)        time_end = time.time()        print('耗费时间——%s' % (time_end-time_start))    return decodef test1():    time.sleep(1)    print('test 1')test1 = timmer(test1)test1()

返回:

test 1
耗费时间——1.0010290145874023

二、使用装饰器代码如下:

#!/usr/bin/env python# -*- coding:utf-8 -*-import timedef timmer(func):    def deco(*args,**kwargs):        time_start = time.time()        func(*args,**kwargs)        time_end = time.time()        print('耗费时间——%s' % (time_end-time_start))    return deco
@timmerdef test1():    time.sleep(1)    print('test 1')#test1 = timmer(test1)test1()
原创粉丝点击