字典是Python里面最常用的一个数据类型,我们常常这样使用字典:
info = {'name': 'kingname', 'salary': 9999999}print(f'姓名:{info["name"]}')
运行效果如下图所示。
但有时候,当我们不知道一个字典里面是否有某个值时,这样写可能会导致报错:
为了防止它报错,我们需要这样写代码:
info.get('age', '不存在age这个key')
运行效果如下图所示。
现在问题来了,每次都用 .get
方法,虽然能解决问题,但是这样写起来代码不美观。并且实际上,只要key不存在,直接返回 None
即可。
为了实现这个目的,我们可以使用Python的继承特性,自己实现一个字典,并覆写字典的 __missing__
方法:
class MyDict(dict): def __init__(self, *args, **kwargs): super().__init__(self, *args, **kwargs) def __missing__(self, key): print(f'{key} 不存在') return None
此时,如果再使用 字典[key]
的方式来获取一个不存在的Key,就会直接返回None,而不会报错。运行效果如下图所示。
除了返回 None
,你也可以在 __missing__
里面返回任何你想返回的缺省内容。