我有一个看似简单的问题,我无法找到答案。 使用以下简单的功能:
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”可用。 我得不到什么? 谢谢, 小号
答案 0 :(得分:3)
在函数定义中使用**kwargs
意味着您可以使用任意数量的关键字参数,并将它们全部存储在名为kwargs
的字典中。您可以使用kwargs['b']
代替b。