擅长:python、mysql、java
<p>您应该返回包装器函数本身,<em>而不是其结果</em>:</p>
<pre><code>def tsfunc(func):
def wrappedFunc():
print '%s() called' % func.__name__
return func()
return wrappedFunc # Do not call the function, return a reference instead
</code></pre>
<p>Decorators用decorator的返回值替换装饰项:</p>
^{pr2}$
<p>相当于:</p>
<pre><code>def foo():
# ....
foo = tsfunc(foo)
</code></pre>
<p>扩展到(在您的代码中):</p>
<pre><code>foo = wrappedFunc()
</code></pre>
<p>所以您用<code>wrappedFunc()</code>调用的结果替换函数<code>foo</code>,而不是<code>wrappedFunc</code>本身。在</p>