Python中的装饰器

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、因为函数和类方法的不同,为前者写的装饰器经常没法直接套用参数的装饰器。

人生苦短,我用cnblog
原文地址:https://www.cnblogs.com/wuzhibinsuib/p/13823871.html