我梦想着一个带有显式关键字 args 的 Python 方法:
def func(a=None, b=None, c=None):
for arg, val in magic_arg_dict.items(): # Where do I get the magic?
print '%s: %s' % (arg, val)
我只想获取调用者实际传递给方法的那些参数的字典,就像**kwargs
,但我不希望调用者能够传递任何旧的随机参数,不像**kwargs
.
>>> func(b=2)
b: 2
>>> func(a=3, c=5)
a: 3
c: 5
那么:有这样的咒语吗?就我而言,我碰巧能够将每个参数与其默认值进行比较,以找到不同的参数,但这有点不雅,当你有九个参数时会变得乏味。对于加分,请提供一个咒语,即使调用者传入分配其默认值的关键字参数,它也可以告诉我:
>>> func(a=None)
a: None
调皮!
编辑:(词法)函数签名必须保持不变。它是公共 API 的一部分,显式关键字 args 的主要价值在于它们的文档价值。只是为了让事情变得有趣。:)