编写高质量代码:改善 Python 程序的91个建议 PDF 文档

发布于 2023-03-23 12:32:54 字数 3405 浏览 134 评论 0

Python 因为具有简单易学 开发效率高 跨平台 面向对象 可扩展 可嵌入 类库丰富等特性,所以被广泛应用于数据处理 游戏逻辑编程 科学计算 系统运维 可编程控制(人工智能)和信息安全等多个领域,是当下最受欢迎的编程语言之一。作为一位 Python 程序员,如何才能编写出健壮 优雅 高质量的代码?这是很多 Python 程序员都感兴趣和都在探索的问题。本书尝试着从如下8个方面总结了编写高质量 Python 代码所需掌握的知识 经验和技巧。

  • 容易被忽视的重要概念和常识,如代码的布局和编写函数的原则等;
  • 编写 Python 程序惯用的方法,如利用 assert 语句去发现问题 使用 enumerate() 获取序列迭代的索引和值等;
  • 语法中的关键条款,如有节制地使用 from...import 语句 异常处理的几点基本原则等;
  • 常见库的使用,如按需选择 sort() 或者 sorted() 使用 Queue 使多线程编程更安全等;
  • Python设计模式的使用,如用发布订阅模式实现松耦合 用状态模式美化代码等;
  • Python的内部机制,如名字查找机制 描述符机制等;
  • 开发工具的使用,如pip等各种开发工具的使用 各种代码测试用具的使用等;
  • Python 代码的性能优化分析,优化的原则 工具 技巧,以及常见性能问题的解决等。

目录

建议1:理解Pythonic概念
建议2:编写Pythonic代码
建议3:理解Python与C语言的不同之处
建议4:在代码中适当添加注释
建议5:通过适当添加空行使代码布局更为优雅、合理
建议6:编写函数的4个原则
建议7:将常量集中到一个文件
建议8:利用assert语句来发现问题
建议9:数据交换值的时候不推荐使用中间变量....
建议10:充分利用Lazy evaluation的特性
建议11:理解枚举替代实现的缺陷
建议12:不推荐使用type来进行类型检查
建议13:尽量转换为浮点类型后再做除法
建议14:警惕eval0的安全漏洞
建议15:使用enumerateO获取序列迭代的索引和值.
建议16:分清=与is的适用场景
建议17:考虑兼容性,尽可能使用Unicode
建议18:构建合理的包层次来管理module ...
建议19:有节制地使用from.. import语句.
建议20:优先使用absolute import来导人模块
建议21: i+=l 不等于++i
建议22:使用with自动关闭资源
建议23:使用else子句简化循环(异常处理).
建议24:遵循异常处理的几点基本原则...
建议25:避免finally中可能发生的陷阱
建议26:深人理解None,正确判断对象是否为空......
建议27:连接字符串应优先使用join而不是+ ........
建议28:格式化字符串时尽量使用.format方式而不是% .
建议29:区别对待可变对象和不可变对象
建议30: []、 0和{}: -致的容器初始化形式
建议31:记住函数传参既不是传值也不是传引用
建议32:警惕默认参数潜在的问题.
建议33:慎用变长参数
建议34:深人理解strO 和reprO的区别
建议35:分清staticmethod和classmethod的适用场景....
建议36:掌握字符串的基本用法
建议37:按需选择sort(或者sorted0 .
建议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:利用模块实现单例模式
建议51:用mixin模式让程序更加灵活
建议52:用发布订阅模式实现松耦合
建议53:用状态模式美化代码.
建议54:理解built-in objects ....
建议55:_ init_ 0 不是构造方法
建议56:理解名字查找机制
建议57:为什么需要self 参数....
建议58:理解MRO与多继承
建议59:理解描述符机制
建议60:区别_ getattr_ _0 和_ getattribute_ 0 方法
建议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 和objgraph剖析内存使用..
建议83:努力降低算法复杂度
建议84:掌握循环优化的基本技巧.
建议85:使用生成器提高效率...
建议86:使用不同的数据结构优化性能
建议87:充分利用set的优势
建议88:使用multiprocessing克服GIL的缺陷
建议89:使用线程池提高效率
建议90:使用C/C++模块扩展提高性能
建议91:使用Cython编写扩展模块...

下载地址:https://www.wenjiangs.com/wp-content/uploads/staticcdn/pdf/c9b4c931-863ef404.zip

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

JSmiles

生命进入颠沛而奔忙的本质状态,并将以不断告别和相遇的陈旧方式继续下去。

文章
评论
84962 人气
更多

推荐作者

泪是无色的血

文章 0 评论 0

yriii2

文章 0 评论 0

1649543945

文章 0 评论 0

g红火

文章 0 评论 0

嘿哥们儿

文章 0 评论 0

旧城烟雨

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文