Python 运用过滤器,该应用程序中使用了一个非常简单的过滤器。以下函数展现了整个过滤流程:
def anscombe_filter(
set_id: str, raw_data_map: Dict[str, List[Pair]]
) -> List[Pair]:
return raw_data_map[set_id]
把这个简单表达式转化为函数出于以下3个原因:
- 相比下标表达式,函数表示法形式上更一致,也更灵活;
- 易于扩展过滤器的功能;
- 可以在这个函数的文档字符串中包含独立的单元测试。
尽管简单的匿名函数可以正常工作,但测试起来并不怎么方便。
我们完全没做任何错误处理,而关注的是所谓的幸福之路(happy path),即一系列理想事件。该函数中出现的任何问题都可能引发异常。WSGI的封装函数应当捕获所有异常并返回相应的状态信息和错误响应内容。
例如set_id
方法有时会出错。与其纠结于所有可能的出错情形,不如直接允许Python给出异常。实际上,该函数遵循了Python的建议:寻求原谅而不是请求许可。通过避免请求许可在代码中实践了该建议,即没有任何预设的if
语句会试图判定参数是否有效。这里只有宽恕处理——异常出现后即在WSGI封装器中进行处理。这一基本建议适用于之前的原始数据和下面要介绍的序列化。