Effective Python
Effective Python: 59 Specific Ways to Write Better Python
Python式的思考
了解你正在使用的Python的版本
遵循PEP8 风格编程风格
了解字节,字符串以及unicode之间的区别
编写有帮助的函数而不是复杂的表达式
知道怎么去分片
在一个简单的分片中避免使用start,end,sreide等关键字
使用列表表达式而不是map和filter
在列表表达式中避免使用超过两个的表达式
复杂地方考虑使用生成器表达式
enumerate 比range更好用
用拉链来并行处理迭代器
在for 和while 循环体后避免使用else语句块
在try/except/else/finally中受益
函数
返回exceptions而不是None
了解闭包中是怎样使用外围作用域变量
考虑使用生成器而不是返回列表
遍历参数的时候保守一点
减少位置参数上的干扰
使用关键字参数来提供可选行为
使用None和文档说明动态的指定默认参数
仅强调关键字参数
类和继承
使用字典和元组来编写工具类
对于简单接口使用函数而不是类
使用@classmethod多态性构造对象
使用super关键字初始化父类
只在用编写Max-in组件的工具类的时候使用多继承
多使用公共属性,而不是私有属性
自定义容器类型要从collections.abc来继承
元类和属性
使用纯属性而不是set,get方法
考虑@property而不是重构属性
在重用的@property方法中使用描述符
为惰属性使用,,
借助元类验证子类
使用元类类注册子类
使用元类来注解类属性
并行与并发
使用subprocess来管理子进程
对于阻塞IO使用线程,并行计算不要使用线程
使用锁机制来避免多个线程中数据的竞争
在线程中使用队列来协同工作
使用协同程序来并发地执行多个函数
使用concurrent.futures来处理并行计算
内置模块
使用functool.wraps来定义函数装饰器
使用contextlib和with语句来编写可复用的try/finally行为
使用copyreg来确保pickle操作可靠
本地时钟应使用datetime替代time模块
使用内置的数据结构和算法
高精度计算应使用decimal模块
了解到哪儿查找社区开发的模块
合作
为每一个函数,类,模块编写文档
使用包来组织模块并且提供稳定的API文档
定义根异常来隔离调用方和API
了解怎么打破循环依赖
使用虚拟环境来隔离并且重建依赖
产品
对于配置发布环境考虑使用模块域级别的代码
使用repr字符串来调试输出
使用unitest进行测试
使用pdb进行交互调试
优化之前先保证性能
使用tracemalloc来理解内存使用和泄露情况
Powered by
GitBook
产品
产品
results matching "
"
No results matching "
"