在python中使用额外的** kwargs:如何访问额外的变量?

时间:2016-02-26 12:11:48

标签: python kwargs

我有一个看似简单的问题,我无法找到答案。 使用以下简单的功能:

def test_kwargs_1(a,**kwargs):
    print a
    print b

我在想,如果我通过了:

kwargs = {'a':1,'b':2}
test_kwargs_1(**kwargs)

它会打印出来:

1
2

因为它将解包“kwargs”并且变量“a”和“b”都可用。 相反,我得到:

1
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
.
.
----> 3     print b
NameError: global name 'b' is not defined

我理解“b”是一个可能存在或不存在的变量,但我认为如果在kwargs中明确定义,解包kwargs会使变量“b”可用。 我得不到什么? 谢谢, 小号

1 个答案:

答案 0 :(得分:3)

在函数定义中使用**kwargs意味着您可以使用任意数量的关键字参数,并将它们全部存储在名为kwargs的字典中。您可以使用kwargs['b']代替b。