擅长:python、mysql、java
<p>不,除非函数定义允许更多的参数(使用<code>**kwargs</code>catch all语法),否则不能调用参数超过定义的方法。在</p>
<p>您可以<em>反省函数并删除它不接受的任何参数:</p>
<pre><code>import inspect
mybigdict = {'a2' : 'foo', 'b2' : 'bar', 'c2' : 'nooooo!'}
argspec = inspect.getargspec(mydef)
if not argspec.keywords:
for key in mybigdict.keys():
if key not in argspec.args:
del mybigdict[key]
mydef(**mybigdict)
</code></pre>
<p>我使用<a href="http://docs.python.org/library/inspect.html#inspect.getargspec" rel="noreferrer">^{<cd2>} function</a>来检查可调用的是否通过<code>.keywords</code>支持<code>**kwarg</code>catch all,如果不支持,我使用<code>.args</code>信息删除该方法不支持的任何内容。在</p>