擅长:python、mysql、java
<p>如果该处理程序采用关键字参数,则对第三个元素使用字典:</p>
<pre><code>handlers = [(1, 2, {}), (3, 4, {'keyword': 5), (6, 7, {})]
for route, handler, kwargs in handlers:
some_method(route, handler, **kwargs)
</code></pre>
<p>或者可以使用<code>*args</code>语法应用参数;在这种情况下,只需捕获循环中的所有<em>值:</p>
^{pr2}$
<p>如果<em>需要将</em>解压为至少2个参数,请在单独的步骤中执行此操作:</p>
<pre><code>for handler in handlers:
route, handler, args = (handler[0], handler[1], handler[2:])
</code></pre>
<p>其中<code>args</code>将是0个或更多元素的元组。在</p>
<p>在Python3中,可以使用splat(<code>*</code>)目标处理任意宽度的解包:</p>
<pre><code>for route, handlers, *args in handlers:
</code></pre>
<p>其中<code>*args</code>捕获解包中的0个或多个<em>额外</em>值。在</p>
<p>另一个路径,到<code>handlers</code>中的元素到最小长度,可以通过以下方式完成:</p>
<pre><code>[(h + (None,) * 3)[:3] for h in handlers]
</code></pre>
<p>演示:</p>
<pre><code>>>> handlers = [(1, 2), (3, 4, 5), (6, 7)]
>>> [(h + (None,) * 3)[:3] for h in handlers]
[(1, 2, None), (3, 4, 5), (6, 7, None)]
</code></pre>