missing

当使用__getitem__方法访问一个不存在的键的时候,会调用__missing__方法来获取默认值,并将该值添加到字典中去

如下所示

if self.default_factory is None: raise KeyError(key) 
self[key] = value = self.default_factory() 
return value

reduce

当定义扩展类型的时候(也就是使用python的C语言API实现的类型), 如果你想要pickle(持久化对象)它们,你必须告诉python如何pickle它们,reduce被定义之后,当对象被pickle的时候就会被调用,它要么返回一个代表全局名称的字符串,python会查找它并且pickle,要么返回一个元组,这个元组包含2到5个元素,其中包括:一个可调用对象,用于重建对象的时候调用,一个参数元素,供那个可调用对象使用,被传递给 setstate 的状态(可选); 一个产生被pickle的列表元素的迭代器(可选) 一个产生pickle的字典元素的迭代器