乐趣区

编写高质量代码-改善-Python-程序的-91-个建议

本文内容全部由 Python 编码的最佳实践组成,从基本原则、惯用法、语法、库、设计模式、内部机制、开发工具和性能优化 8 个方面深入探讨了编写高质量 Python 代码的技巧与禁忌,一共总结出 91 条宝贵的建议。每条建议对应 Python 程序员可能会遇到的一个问题。

建议 1:理解 Pythonic 概念

建议 2:编写 Pythonic 代码

建议 3:理解 Python 与 C 语言的不同之处

建议 4:在代码中适当添加注释

建议 5:通过适当添加空行使代码布局更为优雅、合理

建议 6:编写函数的 4 个原则

建议 7:将常量集中到一个文件

建议 8:利用 assert 语句来发现问题

建议 9:数据交换值的时候不推荐使用中间变量

建议 10:充分利用 Lazy evaluation 的特性

建议 11:理解枚举替代实现的缺陷

建议 12:不推荐使用 type 来进行类型检查

建议 13:尽量转换为浮点类型后再做除法

建议 14:警惕 eval()的安全漏洞

建议 15:使用 enumerate()获取序列迭代的索引和值

建议 16:分清 = 与 is 的适用场景

建议 17:考虑兼容性,尽可能使用 Unicode

建议 18:构建合理的包层次来管理 module

建议 19:有节制地使用 from…import 语句

建议 20:优先使用 absolute import 来导入模块

建议 21:i+=1 不等于 ++i

建议 22:使用 with 自动关闭资源

建议 23:使用 else 子句简化循环(异常处理)

建议 24:遵循异常处理的几点基本原则

建议 25:避免 finally 中可能发生的陷阱

建议 26:深人理解 None,正确判断对象是否为空

建议 27:连接字符串应优先使用 join 而不是 +

建议 28:格式化字符串时尽量使用.format 方式而不是 %

建议 29:区别对待可变对象和不可变对象

建议 30:[]、()和{}:一致的容器初始化形式

建议 31:记住函数传参既不是传值也不是传引用

建议 32:警惕默认参数潜在的问题

建议 33:慎用变长参数

建议 34:深入理解 str()和 repr()的区别

建议 35:分清 staticmethod 和 classmethod 的适用场景

建议 36:掌握字符串的基本用法

建议 37:按需选择 sort()或者 sorted()

建议 38:使用 copy 模块深拷贝对象

建议 39:使用 Counter 进行计数统计

建议 40:深入掌握 ConfigParser

建议 41:使用 argparse 处理命令行参数

建议 42:使用 pandas 处理大型 CSV 文件

建议 43:一般情况使用 ElementTree 解析 XML

建议 44:理解模块 pickle 优劣

建议 45:序列化的另一个不错的选择—JSON

建议 46:使用 traceback 获取栈信息

建议 47:使用 logging 记录日志信息

建议 48:使用 threading 模块编写多线程程序

建议 49:使用 Queue 使多线程编程更安全

建议 50:利用模块实现单例模式

公众号 逆锋起笔 专注分享JavaPython、个人成长、职业发展干货,关注即送小编整理的精品编程视频教程;每天下午 14:40 精彩推送,程序员值得关注的技术平台。

建议 51:用 mixin 模式让程序更加灵活

建议 52:用发布订阅模式实现松耦合

建议 53:用状态模式美化代码

建议 54:理解 build-in objects

建议 55:init() 不是构造方法

建议 56:理解名字查找机制

建议 57:为什么需要 self 参数

建议 58:理解 MRO 与多继承

建议 59:理解描述符机制

建议 60:区别 getattr()和 getattribute()方法

建议 61:使用更为安全的 property

建议 62:掌握 metaclass

建议 63:熟悉 Python 对象协议

建议 64:利用操作符重载实现中缀语法

建议 65:熟悉 Python 的迭代器协议

建议 66:熟悉 Python 的生成器

建议 67:基于生成器的协程及 greenlet

建议 68:理解 GIL 的局限性

建议 69:对象的管理与垃圾回收

建议 70:从 PyPI 安装包

建议 71:使用 pip 和 yolk 安装、管理包

建议 72:做 paster 创建包

建议 73:理解单元测试概念

建议 74:为包编写单元测试

建议 75:利用测试驱动开发提高代码的可测性

建议 76:使用 Pylint 检查代码风格

建议 77:进行高效的代码审查

建议 78:将包发布到 PyPI

建议 79:了解代码优化的基本原则

建议 80:借助性能优化工具

建议 81:利用 cProfile 定位性能瓶颈

建议 82:使用 memory_profiler 和 objgrash 剖析内存使用

建议 83:努力降低算法复杂度

建议 84:掌握循环优化的基本技巧

建议 85:使用生成器提高效率

建议 86:使用不同的数据结构优化性能

建议 87:充分利用 set 的优势

建议 88:使用 meltiprocessing 克服 GIL 的缺陷

建议 89:使用线程池提高效率

建议 90:使用 C /C++ 模块扩展提高性能

建议 91:使用 Cython 编写扩展模块

公众号 逆锋起笔 专注分享JavaPython、个人成长、职业发展干货,关注即送小编整理的精品编程视频教程;每天下午 14:40 精彩推送,每个程序员值得关注的技术平台。

退出移动版