**Kwargs 0位置参数错误。

问题描述 投票:3回答:3

我正试图了解python 3中的**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() takes 0 positional arguments but 1 was given. 我不知道为什么,也看不出我的代码和所提供链接中的例子中的代码有什么明显的区别。

谁能帮我确定是什么原因导致了这个错误?

python-3.x kwargs
3个回答
7
投票

调用 kw 函数 kw(**table)

Python 3 Doc: 链接


2
投票

没有必要让 kwargs 这里是一个变量关键字参数。通过指定 kwargs** 你在定义函数时,使用了数量可变的关键字参数,但没有位置参数,因此出现了错误。

相反,简单地定义你的 kw 功能与。

def kw(kwargs):

1
投票

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

原帖中还有一个错误,这次是在函数定义中出现了

一旦你在参数中用**操作符 "打开 "了一个dict,这个dict在函数中就不存在了。所以在函数中

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

局部变量是Bob, Franny和Ribbit, 它们的值分别是:

© www.soinside.com 2019 - 2024. All rights reserved.