提问者:小点点

**Kwargs 0位置参数错误


我试图在Python3中使用**kwargs,但遇到了一个奇怪的错误。基于这篇关于此事的帖子,我试图创建自己的版本,以确认它对我有效。

table = {'Bob':'Old','Franny':'Less Old, Still a little old though','Ribbit':'Only slightly old'}

def kw(**kwargs):
    for i,j in kwargs.items():
        print(i,'is ',j)

kw(table)

奇怪的是,我一直在返回TypeError:kw()接受0个位置参数,但给出了1个。我不知道为什么,在提供的链接中,我的代码和示例中的代码没有明显的区别。

有人能帮我确定是什么导致了这个错误吗?


共3个答案

匿名用户

kw(**table)调用kw函数

Python 3 Doc: link

匿名用户

这里不需要将kwargs设为变量关键字参数。通过使用**指定kwargs,您定义的函数具有数量可变的关键字参数,但没有位置参数,因此会出现错误。

相反,只需使用以下内容定义kw函数:

def kw(kwargs):

匿名用户

写一个单独的答案,因为我没有足够的声誉来评论。

原始帖子中还有一个错误,这次是在函数定义中

在参数中使用**运算符“打开”dict后,该dict将不再存在于函数中。因此,在函数中:

def kw(**kwargs):
    for i,j in kwargs.items():
        print(i,'is ',j) 

局部变量将是Bob、Franny和Ribbit,以及它们各自的值