我试图在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个
。我不知道为什么,在提供的链接中,我的代码和示例中的代码没有明显的区别。
有人能帮我确定是什么导致了这个错误吗?
用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,以及它们各自的值