我正试图绕过python 3中的** kwargs并遇到一个奇怪的错误。基于对此的this post,我尝试创建自己的版本以确认它对我有用。
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() takes 0 positional arguments but 1 was given
。我不知道为什么,在提供的链接中,我的代码与示例中的代码之间也没有明显的区别。
有人可以帮助我确定导致此错误的原因吗?
答案 0 :(得分:3)
用kw(**table)
调用kw函数
Python 3文档:link
答案 1 :(得分:1)
写一个单独的答案,因为我没有足够的声誉来发表评论。
原始帖子中还有另一个错误,这次是在函数定义中
一旦您在参数中使用**运算符“打开”了一个字典,该字典就不再存在于函数中。因此在函数中:
def kw(**kwargs):
for i,j in kwargs.items():
print(i,'is ',j)
局部变量将是Bob,Franny和Ribbit,并分别具有值
答案 2 :(得分:0)
此处无需将kwargs
设为可变关键字参数。通过用kwargs
指定**
,您可以使用可变数量的关键字参数但没有位置参数的函数来定义函数,因此会出现错误。
相反,只需使用以下命令定义您的kw
函数:
def kw(kwargs):