<p>您可以使用<strong>函数默认值</strong>:
<a href="https://docs.python.org/2/library/inspect.html?highlight=func_defaults#types-and-members" rel="nofollow">https://docs.python.org/2/library/inspect.html?highlight=func_defaults#types-and-members</a></p>
<blockquote>
<p>func_defaults tuple of any default values for arguments</p>
</blockquote>
<pre><code>def some_func(a,b='myDefaultValue'):
print a, b
def wrapper(a,b):
b = some_func.func_defaults[0] if b is None else b
some_func(a,b)
print "b is 'there'"
a = "hello"
b = "there"
wrapper(a,b)
print "b is 'None'"
b = None
wrapper(a,b)
</code></pre>
<p>输出:</p>
^{pr2}$
<p><strong>编辑:</strong>要从注释中回答您的问题,没有任何内置功能可以按名称查找带有默认值的函数的参数。但是,您知道具有默认值的参数必须位于非可选参数之后。因此,如果你知道你拥有的参数的总数,以及其中有多少参数有默认值,你可以减去2,得到具有默认值的参数的起点。然后,可以将参数列表(从先前计算的参数索引开始)与默认参数值列表压缩在一起,并从列表中创建字典。使用<a href="https://docs.python.org/2/library/inspect.html" rel="nofollow">inspect</a>模块获取所需的所有信息:</p>
<p>是这样的:</p>
<pre><code>>>> import inspect
>>> def some_func(a,b,c,d="dee",e="ee"):
... print a,b,c,d,e
...
>>> some_func("aaa","bbb","ccc",e="EEE")
aaa bbb ccc dee EEE
>>> some_funcspec = inspect.getargspec(some_func)
>>> some_funcspec
ArgSpec(args=['a', 'b', 'c', 'd', 'e'], varargs=None, keywords=None, defaults=('dee', 'ee'))
>>> defargsstartindex = len(some_funcspec.args) - len(some_funcspec.defaults)
>>> defargsstartindex
3
>>> namedargsdict = dict(zip([key for key in some_funcspec.args[defargsstartindex:]], list(some_funcspec.defaults)))
>>> namedargsdict
{'e': 'ee', 'd': 'dee'}
</code></pre>
<p>在上面的例子中,<strong>namedargsdict</strong>是带有<code>some_func</code>默认值的参数列表。在</p>
<p>进一步阅读:</p>
<p><a href="https://docs.python.org/2/library/inspect.html#inspect.getargspec" rel="nofollow">https://docs.python.org/2/library/inspect.html#inspect.getargspec</a></p>
<blockquote>
<p>inspect.getargspec(func) Get the names and default values of a Python
function’s arguments. A tuple of four things is returned: (args,
varargs, keywords, defaults). args is a list of the argument names (it
may contain nested lists). varargs and keywords are the names of the *
and ** arguments or None. defaults is a tuple of default argument
values or None if there are no default arguments; if this tuple has n
elements, they correspond to the last n elements listed in args.</p>
<p>Changed in version 2.6: Returns a named tuple ArgSpec(args, varargs,
keywords, defaults).</p>
</blockquote>