如何在Python中将关键/值args的dict正确传递给kwargs?

时间:2013-01-15 17:16:53

标签: python kwargs

我有以下内容:

class Foo:
        def __init__(self, **kwargs):
                print kwargs

settings = {foo:"bar"}
f = Foo(settings)

这会产生错误:

Traceback (most recent call last):
  File "example.py", line 12, in <module>
    settings = {foo:"bar"}
NameError: name 'foo' is not defined

如何将键/值args的dict正确传递给kwargs?

1 个答案:

答案 0 :(得分:6)

使用**kw call convention

f = Foo(**settings)

这适用于任何带有关键字参数的callable:

def foo(spam='eggs', bar=None):
    return spam, bar

arguments = {'spam': 'ham', 'bar': 'baz'}
print foo(**arguments)

或者您可以使用关键字参数调用该函数:

f = Foo(foo="bar")
foo(spam='ham', bar='baz')

你的错误是无关的,你没有定义foo,你可能想把它变成一个字符串:

settings = {'foo': 'bar'}