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

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)模块来查看对象内存占用,预防内存泄露问题

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

你可能感兴趣的:(python深入系列(二):写pythonic代码)