擅长:python、mysql、java
<p>装饰器可用作</p>
<ul>
<li>注册装饰师</li>
<li>功能装饰师</li>
<li>参数化装饰器</li>
<li>基于类的装饰器</li>
</ul>
<p>查询中的代码是<em>函数修饰符</em>,它将<em>修饰函数</em>(<code>square</code>)替换为<code>wrapper</code>。<code>wrapper</code>执行以下操作:</p>
<ul>
<li>调用<code>f(n)</code></li>
<li>将<code>float</code>应用于<code>result</code>并返回它。在</li>
</ul>
<pre><code>def floatify(f):
def wrapper(n):
result = f(n)
return float(result)
return wrapper
</code></pre>
<p><strong>功能装饰商合同:</p>
<p>替换函数通常遵循装饰函数的契约:</p>
<ul>
<li>接受相同数量/种类的参数</li>
<li>返回兼容类型的结果</li>
</ul>
<p><em>替换函数</em>应该保存来自<em>修饰函数</em>的元数据</p>
<ul>
<li>重要的是,为了调试和其他元编程目的,请使用<code>@functools.wraps(f)</code></li>
</ul>