0
点赞
收藏
分享

微信扫一扫

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

mjjackey 2022-03-11 阅读 50

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

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

但是当我们尝试使用 自定义 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=Node) 方法不要添加 default= ,删除这个写法并不影响使用逻辑,但是加上会导致报错,我们可以尝试直接传入 值 或者 对应的变量提示信息。

修改后的代码如下:

user = {'name':'Neo', 'age':18, 'birthday':'2000-01-01'}
default_info = '当前传入的 key 不存在'
name = user.get('name', default_info)
print(name)

# 执行结果如下:
# >>> Neo


user = {'name':'Neo', 'age':18, 'birthday':'2000-01-01'}
default_info = '当前传入的 key 不存在'
name = user.get('sex', default_info)
print(name)

# 执行结果如下:
# >>> 当前传入的 key 不存在
举报

相关推荐

0 条评论