Python包参数?

时间:2010-07-19 08:25:35

标签: python arguments iterable-unpacking

是否可以在python中“打包”参数?我在库中有以下功能,我无法更改(简化):

def g(a,b=2):
    print a,b

def f(arg):
    g(arg)

我能做到

o={'a':10,'b':20}
g(**o)
10 20

但我可以/如何通过f传递此内容?

这就是我不想要的:

f(**o)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: f() got an unexpected keyword argument 'a'

f(o)
{'a': 10, 'b': 20} 2

1 个答案:

答案 0 :(得分:2)

f必须接受任意(位置和)关键字参数:

def f(*args, **kwargs):
    g(*args, **kwargs)

如果您不希望f接受位置参数,请忽略*args部分。