python装饰器的疑问,问题长度不够
def wrapper(func):
    print 'before'
    func()
    print 'after'
    return func


@wrapper
def yuan():
    print 'yuan called'

yuan()
yuan()

这段代码执行的结果是这样的:
before
yuan called
after
yuan called
yuan called

为什么第二个yuan()执行的时候,装饰器没有起作用?我用的Python2.7

1个回答

你的实现有点问题

def wrapper(func):
    def _wrapper():
        print 'before'
        func()
        print 'after'
    return _wrapper


@wrapper
def yuan():
    print 'yuan called'

u012374229
黑猫-警长 我知道你的代码是标准写法,但是为什么我的写法中,只有第一次调用yuan()函数,装饰器才起作用?书上没写,网上也没找到个说法
4 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问