任何一门语言都有自己独特的“黑魔法”,或是语言特性,或是让人开心的语法糖,其中python世界有些简单实用的魔法,能让苦短人生再短一点,在这分享记录下
defaultdict
这个相当常见,带默认值的字典,做统计计数时相当好用,其实更方便的是利用匿名函数处理多层数据,比如按城市统计人名次数
1 | from collections import defaultdict |
contextlib
我们知道with
关键字是python与众不同的语法糖之一,恰当的使用能让代码简洁明了,其中官方库contextlib包下有很多with
控制块的实用工具,用过就回不去了,举几个一克斯然跑:
- suppress
这是官方的解释:Context manager to suppress specified exceptions
,使用场景很常见,比如说我们需要处理一堆商品,但是可能会有些未知异常,可能跑到一半挂了,除了跑一遍修一遍,我们可以用以下代码:
1 | for product in products: |
- contextmanager
contextmanager
提供了一个简单的方式来创建上下文管理器,拿上面的例子来说,直接使用官方的suppress
能让我们遍历完所有商品,但是这种做法会隐藏所有异常,很可能90%的商品处理过程都出了异常,但是我们可能不知情,这时候可以自定义我们的suppress
来进行异常捕获输出:
1 | from contextlib import contextmanager |
除了for循环代码,也可以使用在业务流程里,比如将某个不太重要但容易出错步骤包在我们的suppress
里,使我们的代码更有鲁棒性