Discuss / Python / 装饰器,打卡,交作业

装饰器,打卡,交作业

Topic source

人玉匆花

#1 Created at ... [Delete] [Delete and Lock User]

1.时间戳和调用函数的前后打印

def metric(fn):

    @functools.wraps(fn)

    def inner(*args,**kwargs):

        t1 = time.time()*1000

        print('开始的时间戳: %s ms' % t1)

        fn(*args,**kwargs)

        t2 = time.time()*1000

        print('结束的时间戳: %s ms' % t2)

        print('%s executed in %s ms' % (fn.__name__, t2-t1))

        return fn(*args,**kwargs)

    return inner

人玉匆花

#2 Created at ... [Delete] [Delete and Lock User]

2. @log 和 @log() 都适用的情况,一个很蠢的方法

def log(a='1',*args):

    if isinstance(a,str) is not True:

        def outter(fn):

            @functools.wraps(fn)

            def inner(*args2,**kwargs2):

                print('begin call')

                fn(*args2,**kwargs2)

            return inner

        return outter(a)

    else:

        def outter(fn):

            @functools.wraps(fn)

            def inner(*args2, **kwargs2):

                if args:

                    print('begin call %s%s' % (a,args))

                else:

                    print('begin call %s' % a)

                fn(*args2, **kwargs2)

            return inner

        return outter


  • 1

Reply