为什么我得到这个意外的关键字参数TypeError?

2024-09-28 19:32:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用*args**kwargs测试一些代码,我为**kwargs编写了一个dictionary。因为某种原因,我

def func(*args, **kwargs):
    if args:
        second_test(*args)
    elif kwargs:
        second_test(**kwargs)

def second_test(stringa, integera, floata):
    print("Name: %s, Problems Correct: %d, Points: %f" % (stringa, integera, floata))

profile_1 = ["David", 21, 132.00]
func(*profile_1)

profile_1a = {'Name': 'David', 'Problems Correct': 21, 'Points': 132.00}
func(**profile_1a)

代码从line 44开始,到line 57结束。这是我得到的错误:

^{pr2}$

我在google上搜索了“unexpected keyword argument”,但我找不到定义;只有其他stackoverflow文章。我的代码怎么了?在


Tags: 代码nametestdefargsprofilekwargspoints
2条回答

kwargs传入函数时,它期望在列表中找到确切的变量名。如果您的字典键是stringaintegera、和{},那么函数就可以正常工作了。在

所以你需要改变你的函数变量名,或者改变字典里的键名来实现

关键字参数是按名称传递的所有“未知/意外”命名的参数。在

例如,让我们用一个参数定义一个函数

def func(a):
    print(a)

现在,如果我们用这样一个“意外的”命名参数来调用这个函数

^{pr2}$

然后我们会得到一个打字错误。但是,如果我们将函数修改为除了这些“意外的”命名参数,那么我们就可以运行前面的代码了

def func(a, **kwargs):
    print(a)
    print(kwargs["b"]) # now, if we pass an argument 'b' to the function, this will print its value (if we don't, we get a KeyError)

> func(3, b=15)
3
15

相关问题 更多 >