Discuss / Python / 为啥是 先返回了result的值 再打印出end call?

为啥是 先返回了result的值 再打印出end call?

Topic source

第1题

import functools

def log(f):
    @functools.wraps(f)
    def wrapper(*args, **kw):
        print('begin call %s():' % f.__name__)
        result = f(*args, **kw)
        print('end call %s():' % f.__name__)
        return result
    return wrapper

测试

@log
def f():
    print('running...')

func=f
func()

个人愚见,这里好像并没有“先”返回result值,而是执行了你修饰的f()函数,并打印了输出,而你定义的f()函数并没有返回值,因此result值应该为None,可以加个返回函数试一下


  • 1

Reply