我是Python的新手,我正在尝试基本上创建一个哈希表,检查一个键是否指向表中的值,如果没有,则将其初始化为空数组。我的代码的违规部分是行:
converted_comments[submission.id] = converted_comments.get(submission.id, default=0)
我收到错误:
TypeError: get() takes no keyword arguments
但是在文档(以及各种示例代码)中,我可以看到它确实采用了默认参数:
https://docs.python.org/2/library/stdtypes.html#dict.get http://www.tutorialspoint.com/python/dictionary_get.htm
以下是get()方法的语法:
dict.get(key,default = None)
The Stack上没有这个,所以我认为这是一个初学者的错误?
答案 0 :(得分:89)
由于Python C级API的开发方式,许多内置函数和方法实际上并没有为其参数命名。即使文档调用参数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
答案 1 :(得分:23)
错误消息显示get
没有使用关键字参数,但您提供的是default=0
converted_comments[submission.id] = converted_comments.get(submission.id, 0)
答案 2 :(得分:1)
许多文档和教程,例如https://www.tutorialspoint.com/python/dictionary_get.htm,错误地将语法指定为
dict.get(key, default = None)
代替
dict.get(key, default)