Discuss / Python / 练习

练习

Topic source
import functools

def log(arg):
    if isinstance(arg, str):
        def decorator(func):
            @functools.wraps(func)
            def wrapper(*args, **kw):
                print(arg)
                print('begin call')
                fn = func(*args, **kw)
                print('end call')
                return fn
            return wrapper
        return decorator
    else:
        @functools.wraps(arg)
        def wrapper(*args, **kw):
            print('begin call')
            fn = arg(*args, **kw)
            print('end call')
            return fn
        return wrapper

@log
def f1():
    print('f1')

f1()

@log('execute')
def f2():
    print('f2')

f2()

  • 1

Reply