1、PEP8风格和编写建议
现在python ide或者编辑器插件已经可以很好的支持PEP8,以下是我觉得比较容易忽略的规则:
- 使用空格表示缩进,不用tab
- 采用内联形式的否定词,如采用if a is not b,不采用if not a is b
- 总是通过绝对路径引入包
- import导入顺序:标准库、第三方库、自己库,字母排序
(完整地址:http://www.python.org/dev/peps/pep-0008) - 尽量不要使用嵌套字典(不好维护)
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)模块来查看对象内存占用,预防内存泄露问题
(持续更新......)
网友评论