Discuss / Python / 来交作业了

来交作业了

Topic source
def log(*txt):
    if txt[0] == 'execute':
        def decorator(fn):
            @functools.wraps(fn)
            def wrapper(*args, **kwargs):
                print(f'execute : {fn.__name__}')
                print('begin call')
                result = fn(*args, **kwargs)
                print('end call')
                return result
            return wrapper
        return decorator
    else:
        fn = txt[0]

        @functools.wraps(fn)
        def wrapper(*args, **kwargs):
            print('begin call')
            result = fn(*args, **kwargs)
            print('end call')
            return result
        return wrapper

需要注意的是使用可变参数时,输入的参数是以tuple的形式传入的,直接对比或者作为函数使用会报错

为什么加了一个中间值result后,会使函数的调用在中间显现


  • 1

Reply