擅长:python、mysql、java
<p>问题在于,您的参数只是一系列值,而不是您可以操纵的值本身。关键字参数本身不是一级值(也就是说,<code>a=3</code>不是一个值);它们纯粹是一种句法结构</p>
<p><code>*</code>和<code>**</code>参数让您走到了一半:</p>
<pre><code>def pass_thru(*args, **kwargs):
return *args, kwargs
</code></pre>
<p>然后</p>
<pre><code>>>> pass_thru(1, 2, a=3)
(1, 2, {'a': 3})
</code></pre>
<p>但是你不能简单地把它传递回<code>pass_thru</code>;你会得到不同的结果</p>
<pre><code>>>> pass_thru(pass_thru(1,2,a=3))
((1, 2, {'a': 3}), {})
</code></pre>
<p>您可以尝试解压缩元组:</p>
<pre><code>>>> pass_thru(*pass_thru(1,2,a=3))
(1, 2, {'a': 3}, {})
</code></pre>
<p>但你真正需要的是把字典也打开。差不多</p>
<pre><code>>>> *a, kw = pass_thru(1,2,a=3)
>>> pass_thru(*a, **kw)
(1, 2, {'a': 3})
</code></pre>
<p>据我所知,没有办法将最后一个示例合并到单个嵌套函数调用中</p>