擅长:python、mysql、java
<p>只是提供一个不同的观点:语法</p>
<pre><code>@expr
def func(...): #stuff
</code></pre>
<p>相当于</p>
<pre><code>def func(...): #stuff
func = expr(func)
</code></pre>
<p>尤其是,<code>expr</code>可以是您喜欢的任何东西,只要它的计算结果是可调用的。在<em>special</em>special中,<code>expr</code>可以是一个decorator工厂:你给它一些参数,它给你一个decorator。所以也许更好的方法是</p>
<pre><code>dec = decorator_factory(*args)
@dec
def func(...):
</code></pre>
<p>然后可以缩短为</p>
<pre><code>@decorator_factory(*args)
def func(...):
</code></pre>
<p>当然,因为它看起来像是一个装饰器,所以人们倾向于将它命名来反映这一点。当你试图遵循间接的层次时,这可能会让人困惑。</p>