擅长:python、mysql、java
<p>您可以避免重新定义函数中的所有参数,只需使用<code>**kwargs</code>来捕获所有关键字参数。在</p>
<p>然后将关键字参数传递给<code>foo</code>函数</p>
<pre><code>def foo(x, setting1="def1", settings2="def2"):
print(setting1,settings2)
def bar(y,**kwargs):
foo(y,**kwargs)
bar(12)
bar(y=12)
bar(12,setting1="other")
</code></pre>
<p>结果:</p>
^{pr2}$
<p>注意,由于<code>y</code>在<code>kwargs</code>之外,所以将<code>y</code>作为关键字传递也可以。在</p>
<p>唯一的缺点是您不知道实际可以传递给<code>bar</code>的内容,但这是合乎逻辑的,因为它取决于<code>foo</code>接受什么。通过在函数中添加一个docstring来弥补这个问题。在</p>