> 文档中心 > 关于 - TypeError: dict.get() takes no keyword arguments

关于 - TypeError: dict.get() takes no keyword arguments

首先我们来看一下关于 dict 的 get() 函数的使用方法

get 函数的用法:dict.get(key, default=None) , key 为需要获取 value 的 key,default 为当 key 不存在的时候返回的默认值,默认是 None,我们也可以自定义

但是当我们尝试使用 自定义 default 的时候 ,产生了 TypeError: dict.get() takes no keyword arguments 的报错信息。

代码示例如下:

user = {'name':'Neo', 'age':18, 'birthday':'2000-01-01'}default_info = '当前传入的 key 不存在'name = user.get('name', default=default_info)print(name)# 执行结果如下:# >>> TypeError: dict.get() takes no keyword arguments

问题解析:

Python 的底层是 C 写的,调用底层 C语言 的时候,在编译时无法解析这个参数的名称,而目前Python的底层设计无法解决这个问题,所以这里直接传入 default 的参数即可,不要加入default=,这样使用也不会造成问题。

解决方法:get("key", default=None) 方法不要添加 default= ,删除这个写法并不影响使用逻辑,但是加上会导致报错,我们可以尝试直接传入 值 或者 对应的变量提示信息。

修改后的代码如下:

user = {'name':'Neo', 'age':18, 'birthday':'2000-01-01'}default_info = '当前传入的 key 不存在'name = user.get('name', default_info)print(name)# 执行结果如下:# >>> Neouser = {'name':'Neo', 'age':18, 'birthday':'2000-01-01'}default_info = '当前传入的 key 不存在'name = user.get('sex', default_info)print(name)# 执行结果如下:# >>> 当前传入的 key 不存在

PDF转换