python深入系列(二):写pythonic代码

2019-09-25  本文已影响0人  justworld

1、PEP8风格和编写建议

现在python ide或者编辑器插件已经可以很好的支持PEP8,以下是我觉得比较容易忽略的规则:

2、使用zip同时遍历多个迭代器

zip函数可以很方便地同时遍历多个迭代器,返回一个元组。系统库里的有缺陷,使用itertools模块中的zip_longest替代

3、警惕内存泄露的场景

当对象当做参数传值且保存起来,会发生对象的引用计数无法计为0造成内存泄露,所以这种情况考虑使用
weakref模块,里面有特殊的字典可以用于保存,当gc发现WeakKeyDictionary里面是实例的最后一份引用,会自动删除键值

4、pickle模块只适合用来在彼此信任的程序间

pickle模块序列化数据采用的是不安全的格式,实际上是一个程序,如果混入恶意信息,可能会对程序造成伤害,如果可以使用json替代

5、时区处理使用datetime

尽量用datetime和pytz处理时区问题,而不要用time

6、使用bisect模块

bisect模块实现了二分查找,比list index要快得多

7、精确度场景使用decimal

decimal自带了很多处理精度的方法,如果decimal满足不了精度,可以使用精度不受限制的fractions模块

8、编写docstring

给模块、类、函数都写上docstring,说明用途、使用、参数、返回值等

9、进行内存分析

可以使用heapy(python2)和tracemalloc(python3)模块来查看对象内存占用,预防内存泄露问题

(持续更新......)

上一篇 下一篇

猜你喜欢

热点阅读