def log(func): def wrapper(args, **kw): print('call %s():' % func.name) return func(args, **kw) return wrapper
@log def f(): pass
首先@log等同于f=log(f)吧 那么为什么wrapper这个函数要带上参数,毕竟返回wrapper函数时还要用这个参数调用函数f,可是函数f明明没有参数啊。。。
还有一个问题,使用装饰器后,是不是调用函数f变成先装饰再调用函数wrapper呢?这个是我对这段代码的理解,不知道是不是对的。
Sign in to make a reply
范巴i特
def log(func): def wrapper(args, **kw): print('call %s():' % func.name) return func(args, **kw) return wrapper
@log def f(): pass
首先@log等同于f=log(f)吧 那么为什么wrapper这个函数要带上参数,毕竟返回wrapper函数时还要用这个参数调用函数f,可是函数f明明没有参数啊。。。
还有一个问题,使用装饰器后,是不是调用函数f变成先装饰再调用函数wrapper呢?这个是我对这段代码的理解,不知道是不是对的。