有没有办法在函数调用时传递比函数要求更多的kwargs参数?
示例:
def mydef(a, b):
print a
print b
mydict = {'a' : 'foo', 'b' : 'bar'}
mydef(**mydict) # This works and prints 'foo' and 'bar'
mybigdict = {'a' : 'foo', 'b' : 'bar', 'c' : 'nooooo!'}
mydef(**mybigdict) # This blows up with a unexpected argument error
有没有办法在不报错的情况下传递 mybigdict
?在我的理想世界中,'c'
永远不会在 mydef
中使用,并且会被忽略掉。谢谢,我找不到我要找的东西。
编辑:修正了一下代码。
mydef(a, b, **kwargs)
是我要找的形式,但 inspect 函数参数是我新学习的东西,绝对是我工具箱中需要的。谢谢大家!
dict
而不是tuples
吗?我还没有遇到过这种情况... - mgilsontuples
传递给位置参数,将dicts
传递给默认和关键字参数。因此,我的典型函数调用可能如下所示:myfunc(*mytuple,**mydict)
,其中func
被定义为:def func(a,b,c=2,**kwargs):
,而mytuple
可能是(1, 2)
。显然有些人可能会以不同的方式做(就像你一直在做的那样),MartijnPieters也证实了这一点。你是对的,对于元组,顺序很重要,顺序是你将参数传递给底层函数的位置参数的顺序。 - mgilson