擅长:python、mysql、java
<p>我觉得这个问题很有意思,即使问得很糟糕:</p>
<p>如果Python文档中有一些没有参数的decorator示例,那么最简单的部分是,我花了一些时间才明白,接受参数的decorator实际上是一个接受参数并返回decorator的函数。一旦这一点弄清楚,答案几乎显而易见:</p>
<pre><code>def logger(prefix):
def decorate(f):
def wrapper(*args, **kwargs):
print(prefix, f.__name__, "args", args, "kwargs", kwargs)
cr = f(*args, **kwargs)
print(prefix, f.__name__, "result", cr)
return cr
return wrapper
return decorate
</code></pre>
<p>用法:</p>
^{pr2}$