TypeError: get() 不接受关键字参数
我试了一些代码,比如:
converted_comments[submission.id] = converted_comments.get(submission.id, default=0)
这里的 converted_comments
是一个 dict
(字典)。但是我遇到了一个错误,错误信息是:
TypeError: get() takes no keyword arguments
文档里似乎显示 dict.get
确实有一个叫 default
的参数。
get(
key[, default])
如果 key 在字典里,就返回 key 对应的值;如果不在,就返回 default。如果没有提供 default,它默认返回
None
,所以这个方法不会抛出KeyError
错误。
那到底哪里出问题了,为什么它没有像我预期的那样工作呢?
3 个回答
12
很多文档和教程,比如这个 https://www.tutorialspoint.com/python/dictionary_get.htm,错误地把语法写成了
dict.get(key, default = None)
其实应该是
dict.get(key, default)
198
因为Python的C级接口开发方式,有很多内置的函数和方法其实并没有为它们的参数起名字。即使文档里提到某个参数叫default
,这个函数也不会把default
当作可选的第二个参数来识别。你必须按照参数的位置来提供这些参数:
>>> d = {1: 2}
>>> d.get(0, default=0)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: get() takes no keyword arguments
>>> d.get(0, 0)
0
40
这个错误信息的意思是,get
这个函数不接受关键字参数,但你却给它传了一个关键字参数,具体是default=0
。
converted_comments[submission.id] = converted_comments.get(submission.id, 0)