Discuss / Python / 装饰器

装饰器

Topic source

BillyShears

#1 Created at ... [Delete] [Delete and Lock User]
第一题:
def metric(fn):
    def f(*args,**knargs):
        print('%s executed in %s ms' % (fn.__name__, '10.24'))
        return fn(*args,**knargs)
    return f

第二题:

#在前后添加日志:
def log(func):
    @functools.wraps(func)
    def d(*args,**knargs):
        print('begin call')
        temp=func(*args,*knargs)#临时变量,这样可以在上下添加日志
        print('end call')
        return temp
    return d

第三题:

def log(*args):
    def f1(func):
        functools.wraps(func)
        def f2(*args1,**knargs):
            if args:#添加一个判断是否为空即可
                print("%s"%args)
            print('functionName:%s()'%func.__name__)
            return func(*args1,**knargs)
        return f2
    return f1

  • 1

Reply