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

ser*_*ajo -2 python keyword-argument

我有一个看似简单的问题,但我找不到答案。使用一个简单的函数,例如:

def test_kwargs_1(a,**kwargs):
    print a
    print b
Run Code Online (Sandbox Code Playgroud)

我在想,如果我通过了:

kwargs = {'a':1,'b':2}
test_kwargs_1(**kwargs)
Run Code Online (Sandbox Code Playgroud)

它会打印:

1
2
Run Code Online (Sandbox Code Playgroud)

因为它会解压 "kwargs" 并且变量 "a" 和 "b" 都可用。相反,我得到:

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

我知道“b”是一个可能存在也可能不存在的变量,但我认为如果在 kwargs 中明确定义,解包 kwargs 将使变量“b”可用。我没有得到什么?谢谢,s

zon*_*ndo 6

使用**kwargs在函数定义意味着你可以采取任何数量的关键字参数,你将他们都存储在名为字典kwargs。您可以使用kwargs['b']代替 b。