吴先生不爱吃辣

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

1、计算函数耗时的装饰器

import time
from functools import wraps
def print_info(f):
    """
    @para: f, 入参函数名称
    """
    @wraps(f) # 确保函数f名称等属性不发生改变
    def info():
        print('正在调用函数名称为: %s ' % (f.__name__,))
        t1 = time.time()
        f()
        t2 = time.time()
        delta = (t2 - t1)
        print('%s 函数执行时长为:%f s' % (f.__name__,delta))

    return info


@print_info
def f1():
    time.sleep(1.0)


@print_info
def f2():
    time.sleep(2.0)


f1()
f2()

2、使用wrapt模块编写更加扁平的装饰器

解决问题:

1、实现带参数的装饰器时,层层嵌套的函数特别难写,难读

2、因为函数和类方法的不同,为前者写的装饰器经常没法直接套用参数的装饰器。

 

posted on 2020-10-15 23:44  吴先生不爱吃辣  阅读(76)  评论(0编辑  收藏  举报