TypeError:get()不带关键字参数

时间:2014-06-28 03:08:22

标签: python

我是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上没有这个,所以我认为这是一个初学者的错误?

3 个答案:

答案 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)