关于 - 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 不存在