Discuss / Python / 感觉越来越难了

感觉越来越难了

Topic source

第一题

def metric(fn):
    def wrapper(*args, **kw):
        start = time.time()
        a=fn(*args, **kw)
        end = time.time()
        print('%s executed in %s ms' % (fn.__name__,end-start))
        return a
    return wrapper

输出为:

fast executed in 0.0012867450714111328 ms
slow executed in 0.12357020378112793 ms

第二题

import functools
def log(unknow_arg):
    if type(unknow_arg)==str:
        def decorator(func):
            @functools.wraps(func)
            def wrapper(*args, **kw):
                print('%s %s():' % (unknow_arg, func.__name__))
                print('begin call')
                a=func(*args, **kw)
                print('end call')
                return a
            return wrapper
        return decorator
    else:
        @functools.wraps(unknow_arg)
        def wrapper(*args, **kw):
            print('begin call')
            a=unknow_arg(*args, **kw)
            print('end call')
            return a
        return wrapper

输出分别为:

begin call
end call


execute f():
begin call
end call

  • 1

Reply