下载安卓APP箭头
箭头给我发消息

客服QQ:3315713922
读书 > 编程语言 >Python > 编写高质量代码:改善Python程序的91个建议

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

综合评级:★★★★★

定价:59.00

作者:张颖,赖勇浩 著

出版社:机械工业出版社

出版日期:2014年6月

页数:262

ISBN:9787111467045

书籍介绍

在通往“Python技术殿堂”的路上,本书将为你编写健壮、优雅、高质量的Python代码提供切实帮助!内容全部由Python编码的最佳实践组成,从基本原则、惯用法、语法、库、设计模式、内部机制、开发工具和性能优化8个方面深入探讨了编写高质量Python代码的技巧与禁忌,一共总结出91条宝贵的建议。每条建议对应Python程序员可能会遇到的一个问题。本书不仅以建议的方式从正反两方面给出了被实践证明为十分优秀的解决方案或非常糟糕的解决方案,而且分析了问题产生的根源,会使人有一种醍醐灌顶的感觉,豁然开朗。

  本书针对每个问题所选择的应用场景都非常典型,给出的建议也都与实践紧密结合。书中的每一条建议都可能在你的下一行代码、下一个应用或下一个项目中显露锋芒。建议你将本书搁置在手边,随时查阅,相信这么做一定能使你的学习和开发工作事半功倍。

相关课程
目录
前言
第1章 引论
  建议1:理解Pythonic概念
  建议2:编写Pythonic代码
  建议3:理解Python与C语言的不同之处
  建议4:在代码中适当添加注释
  建议5:通过适当添加空行使代码布局更为优雅、合理
  建议6:编写函数的4个原则
  建议7:将常量集中到一个文件
第2章 编程惯用法
  建议8:利用assert语句来发现问题
  建议9:数据交换值的时候不推荐使用中间变量
  建议10:充分利用Lazy evaluation的特性
  建议11:理解枚举替代实现的缺陷
  建议12:不推荐使用type来进行类型检查
  建议13:尽量转换为浮点类型后再做除法
  建议14:警惕eval()的安全漏洞
  建议15:使用enumerate()获取序列迭代的索引和值
  建议16:分清==与is的适用场景
  建议17:考虑兼容性,尽可能使用Unicode
  建议18:构建合理的包层次来管理module
第3章 基础语法
  建议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的适用场景
第4章 库
  建议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使多线程编程更安全
第5章 设计模式
  建议50:利用模块实现单例模式
  建议51:用mixin模式让程序更加灵活
  建议52:用发布订阅模式实现松耦合
  建议53:用状态模式美化代码
第6章 内部机制
  建议54:理解built-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:对象的管理与垃圾回收
第7章 使用工具辅助项目开发
  建议70:从PyPI安装包
  建议71:使用pip和yolk安装、管理包
  建议72:做paster创建包
  建议73:理解单元测试概念
  建议74:为包编写单元测试
  建议75:利用测试驱动开发提高代码的可测性
  建议76:使用Pylint检查代码风格
  建议77:进行高效的代码审查
  建议78:将包发布到PyPI
第8章 性能剖析与优化
  建议79:了解代码优化的基本原则
  建议80:借助性能优化工具
  建议81:利用cProfile定位性能瓶颈
  建议82:使用memory_profiler 和 objgraph 剖析内存使用
  建议83:努力降低算法复杂度
  建议84:掌握循环优化的基本技巧
  建议85:使用生成器提高效率
  建议86:使用不同的数据结构优化性能
  建议87:充分利用set的优势
  建议88:使用multiprocessing克服GIL的缺陷
  建议89:使用线程池提高效率
  建议90:使用C/C++模块扩展提高性能
  建议91:使用 Cython 编写扩展模块
前言

前  言

为什么要写这本书

当这本书的写作接近尾声的时候,回过头来看看这一年多的写作历程,不由得心生感叹,这是一个痛并快乐着的过程。不必说牺牲了多少个周末,也不必计算多少个夜晚伏案写作,单是克服写作过程中因疲劳而迸发出来的彷徨、犹豫和动摇等情绪都觉得是件不容易的事情。但不管怎么说,这最终是个沉淀和收获的过程,写作的同时我也和读者们一样在进步。为什么要写这本书?可以说是机缘巧合。机械工业出版社的杨福川老师联系到我,说他们打算策划一本关于高质量Python编程方面的书籍,问我有没有兴趣加入。实话实说,最开始我是持否定态度的,一则因为业余时间实在有限,无法保证我“工作和生活要平衡”的理念;二则觉得自己水平有限,在学习Python的道路上我和千千万万读者一样,只是一个普通的“朝圣者”,我也有迷惑不解的时候,在没有修炼到大彻大悟之前拿什么来给人传道授业?是赖勇浩老师的加入给我注入了一针强心剂,他丰富的Python项目经验以及长期活跃于Python社区所积累下来的名望无形中给了我一份信心。杨老师的鼓励和支持也更加坚定了我的态度,经过反复考虑和调整自己的心态,最终我决定和赖老师一起完成这本书。因为我也经历过从零开始的Python学习过程,我也遇到过各种困惑,经历过不同的曲折,这些可能也正是每一个学习Python的人从最初到进阶这一过程中都会遇到的问题。抱着分享自己在学习和工作中所积累的一点微薄经验的心态,我开始了本书的写作之旅。这个过程也被我当作是对自己学过的知识的一种梳理。如果与此同时,还能够给读者带来一些启示和思索,那将是这本书所能带给我的最大收获了。

读者对象

有一定的Python基础,希望通过项目最佳实践来提升自己的相关Python人员。

希望进一步掌握Python相关内部机制的技术人员。

希望写出更高质量、更Pythonic代码的编程人员。

开设相关课程的大专院校师生。

如何阅读本书

首先需要注意的是,本书并不是入门级的语法介绍类的书籍,因此在阅读本书之前假定你已经掌握了最基础的Python语法。如果没有,也没有关系,你可以先找一本最简单的介绍Python语法的书籍看看,尝试写几个Python小程序之后再来阅读本书。

本书分为8章,主要从编程惯用法、基础语法、库、设计模式、内部机制、开发工具、性能剖析与优化等方面解读如何编写高质量的Python程序。每个章节的内容都以建议的形式呈现,这些建议或源于实际项目应用经验,或源于对Python本质的理解和探讨,或源于社区推荐的做法。它们能够帮助读者快速完成从入门到进阶的这个过程。

由于各个章节相对独立,因此无须花费整段的时间从头开始阅读。你可以在空闲的时候选取任意感兴趣的小节阅读。为了减轻读者负担,本书代码尽量保持完整,阅读过程中无须额外下载其他相关代码。

勘误和支持

由于作者的水平有限,加之编写时间仓促,书中难免会出现一些错误或者不准确的地方,恳请读者批评指正。如果你在阅读过程中遇到任何问题或者发现任何错误,欢迎发送邮件至邮箱highqualitypython@163com,我们会尽量一一解答直到你满意。期待能够得到你的真挚反馈。

致谢

首先要感谢机械工业出版社华章公司的杨福川老师,因为有了你的鼓励才使我有勇气开始这本书。还要感谢机械工业出版社的孙海亮编辑,在这一年多的时间中始终支持我的写作,是你的鼓励和帮助引导我顺利完成全部书稿。当然也要感谢我的搭档赖老师,和你合作是一件非常愉快的事情,也让我收获颇多。

其次要感谢我的家人,是你们的宽容、支持和理解给了我完成本书的动力,也是你们无微不至的照顾让我不必为生活中的琐事烦心,从而能全身心地投入到写作中去。

最后,我想提前感谢一下本书的读者,谢谢你们能够选择阅读这本书,这将是作为作者的我们最大的荣幸。

谨以此书献给所有热爱Python的朋友们!

 

 

张 颖

热门图书
推荐新闻
技术文库
论坛推荐