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

出版日期:2014-6
ISBN:9787111467043
作者:张颖,赖勇浩
页数:272页

内容概要

张颖,资深软件开发工程师,精通Java、Python、Perl等技术,以及多种脚本语言,有多年开发经验。曾就职于阿尔卡特朗讯上海公司的LTE无线事业部,现就职于IBM CSTL,工作期间获得过多种奖励,并于2012年获得一项云计算相关的专利。
赖勇浩,资深软件开发工程师,自2006年起以编写Python代码为生,现已创业。在Python领域有深厚的积累,CSDN博客专家,博客浏览量超过200万。也是珠三角技术沙龙创始人之一,从2009年起担任沙龙组委,长年活跃在社区第一线,在国内Python圈子里有较高的知名度和影响力。有超过7年的游戏开发经验,擅长Python、C++等网游相关的技术,曾就职于网易等网游研发厂商;现专注于中国彩票事业,开发互联网、电话和自助终端彩票销售平台,以促进行业信息化为己任。

书籍目录

前 言
第1章 引论 1
建议1:理解Pythonic概念 1
建议2:编写Pythonic代码 5
建议3:理解Python与C语言的不同之处 8
建议4:在代码中适当添加注释 10
建议5:通过适当添加空行使代码布局更为优雅、合理 12
建议6:编写函数的4个原则 15
建议7:将常量集中到一个文件 18
第2章 编程惯用法 20
建议8:利用assert语句来发现问题 20
建议9:数据交换值的时候不推荐使用中间变量 22
建议10:充分利用Lazy evaluation的特性 24
建议11:理解枚举替代实现的缺陷 25
建议12:不推荐使用type来进行类型检查 27
建议13:尽量转换为浮点类型后再做除法 29
建议14:警惕eval()的安全漏洞 31
建议15:使用enumerate()获取序列迭代的索引和值 33
建议16:分清==与is的适用场景 35
建议17:考虑兼容性,尽可能使用Unicode 37
建议18:构建合理的包层次来管理module 42
第3章 基础语法 45
建议19:有节制地使用from...import语句 45
建议20:优先使用absolute import来导入模块 48
建议21:i+=1不等于++i 50
建议22:使用with自动关闭资源 50
建议23:使用else子句简化循环(异常处理) 53
建议24:遵循异常处理的几点基本原则 55
建议25:避免finally中可能发生的陷阱 59
建议26:深入理解None,正确判断对象是否为空 60
建议27:连接字符串应优先使用join而不是+ 62
建议28:格式化字符串时尽量使用.format方式而不是% 64
建议29:区别对待可变对象和不可变对象 68
建议30:[]、()和{}:一致的容器初始化形式 71
建议31:记住函数传参既不是传值也不是传引用 73
建议32:警惕默认参数潜在的问题 77
建议33:慎用变长参数 78
建议34:深入理解str()和repr()的区别 80
建议35:分清staticmethod和classmethod的适用场景 82
第4章 库 86
建议36:掌握字符串的基本用法 86
建议37:按需选择sort()或者sorted() 89
建议38:使用copy模块深拷贝对象 92
建议39:使用Counter进行计数统计 95
建议40:深入掌握ConfigParser 97
建议41:使用argparse处理命令行参数 99
建议42:使用pandas处理大型CSV文件 103
建议43:一般情况使用ElementTree解析XML 107
建议44:理解模块pickle优劣 111
建议45:序列化的另一个不错的选择——JSON 113
建议46:使用traceback获取栈信息 116
建议47:使用logging记录日志信息 119
建议48:使用threading模块编写多线程程序 122
建议49:使用Queue使多线程编程更安全 125
第5章 设计模式 129
建议50:利用模块实现单例模式 129
建议51:用mixin模式让程序更加灵活 132
建议52:用发布订阅模式实现松耦合 134
建议53:用状态模式美化代码 137
第6章 内部机制 141
建议54:理解built-in objects 141
建议55:__init__()不是构造方法 143
建议56:理解名字查找机制 147
建议57:为什么需要self参数 151
建议58:理解MRO与多继承 154
建议59:理解描述符机制 157
建议60:区别__getattr__()和__getattribute__()方法 160
建议61:使用更为安全的property 164
建议62:掌握metaclass 169
建议63:熟悉Python对象协议 176
建议64:利用操作符重载实现中缀语法 179
建议65:熟悉 Python 的迭代器协议 181
建议66:熟悉 Python 的生成器 185
建议67:基于生成器的协程及greenlet 188
建议68:理解GIL的局限性 192
建议69:对象的管理与垃圾回收 194
第7章 使用工具辅助项目开发 197
建议70:从PyPI安装包 197
建议71:使用pip和yolk安装、管理包 199
建议72:做paster创建包 202
建议73:理解单元测试概念 209
建议74:为包编写单元测试 212
建议75:利用测试驱动开发提高代码的可测性 216
建议76:使用Pylint检查代码风格 218
建议77:进行高效的代码审查 221
建议78:将包发布到PyPI 224
第8章 性能剖析与优化 227
建议79:了解代码优化的基本原则 227
建议80:借助性能优化工具 228
建议81:利用cProfile定位性能瓶颈 229
建议82:使用memory_profiler 和 objgraph 剖析内存使用 235
建议83:努力降低算法复杂度 237
建议84:掌握循环优化的基本技巧 238
建议85:使用生成器提高效率 240
建议86:使用不同的数据结构优化性能 243
建议87:充分利用set的优势 245
建议88:使用multiprocessing克服GIL的缺陷 248
建议89:使用线程池提高效率 254
建议90:使用C/C++模块扩展提高性能 257
建议91:使用 Cython 编写扩展模块 259

作者简介

在通往“Python技术殿堂”的路上,本书将为你编写健壮、优雅、高质量的Python代码提供切实帮助!内容全部由Python编码的最佳实践组成,从基本原则、惯用法、语法、库、设计模式、内部机制、开发工具和性能优化8个方面深入探讨了编写高质量Python代码的技巧与禁忌,一共总结出91条宝贵的建议。每条建议对应Python程序员可能会遇到的一个问题。本书不仅以建议的方式从正反两方面给出了被实践证明为十分优秀的解决方案或非常糟糕的解决方案,而且分析了问题产生的根源,会使人有一种醍醐灌顶的感觉,豁然开朗。
《编写高质量代码:改善Python程序的91个建议》针对每个问题所选择的应用场景都非常典型,给出的建议也都与实践紧密结合。书中的每一条建议都可能在你的下一行代码、下一个应用或下一个项目中显露锋芒。建议你将本书搁置在手边,随时查阅,相信这么做一定能使你的学习和开发工作事半功倍。


 编写高质量代码:改善Python程序的91个建议下载 更多精彩书评



发布书评

 
 


精彩书评 (总计5条)

  •     华章应该是搞了个“编写高质量代码”的系列,貌似属于介绍介绍不同语言最佳实践类的书籍。个人感觉这类书籍还是有存在的必要的。毕竟不是每个人都能够很快的领会一门语言的主要特性并灵活运用的。所以这类书籍其实就是一个Programming Guide。只不过这个Guide不是针对于某个框架或者SDK的使用,而是针对语言本身的。从章节安排上来看,本书也是尽量覆盖Python的主要特性,同时也介绍了一些高级点的议题,比如MRO,描述符,元类等等。这些议题,以往的书,比如《Expert Python Programming》(《Python高级编程》)和《Python Essential Reference》(《Python参考手册》)都有提及。关于部分标准库工具的使用,也有专门的一本《Python标准库》介绍Python的标准库中的各种工具的用法。可以说,这本书就是从这三本书里挖出一些平时大家用得比较多的东西讲一遍,而且讲得很简单,让读者能快速上手。作者想法是好的,毕竟上面我提到的三本书,《Expert Python Programming》中文版已经是很难找到有卖的了,《Python参考手册》的的第四版中文版翻译过于粗糙,而《Python标准库》整个就是一本砖头,大家平时也用不到那么多的内容。这些书不尽人意的地方也提高了一般人学习Python的门槛,虽然不是那么明显。所以有一本书能够解决这个问题还是挺有用的。但这本书做得不够好。究其原因:第一,书的内容太过琐碎。有些议题,比如MRO,比如元类,真的不是那么短的篇幅就能说得清楚的。建议这些高级议题的部分,可以适当的再添加点内容。第二,作者虽然提到代码尽量给出完整的,但是实际上代码的给出还是有不完整的地方,我觉得作为最佳实践的例子,给一个完整的代码供读者下载阅览还是相当有必要的,至少可以提供一个Github的repo给大家看看。第三,上面提到了,本书内容的来源多取自前面提到的三本书,前面三本内容肯定也是来源于Python的官方文档和开源的实现的。但是既然是参考了别人的东西,是不是应该给个引用注解或者文章的链接?有的议题其实是很深的问题,对于自己没提到的部分,是不是应该给出几篇扩展阅读文献供读者进一步研究?有人提到这本书写得虎头蛇尾,很多地方戛然而止,还是有道理的。既然作者限于篇幅,不好往下写,那至少应该给大家指个方向,让大家自己去找别的阅读材料。第四,第一版的书,按惯例,代码校对稀烂无比,请在下一版里恶狠狠的改善吧。到处是印刷和排版的错误,这个质量给新手看到玩两把人家发现代码出错了就该直接评个1星走人了。
  •     使用了 from operator import itemgetter居然还用 operator.itemgetter 调用方法,感觉代码都没运行过...针对字典 mydict 的 value 结构 [n,m] 中的 n 按照从小到大的顺序排列粘贴的结果都不是预期的,完全说不通...应该是sorted(mydict.iteritems(), key=lambda (k,v): itemgetter(0)(v))而不是sorted(mydict.iteritems(), key=lambda (k,v): itemgetter(1)(v))
  •     接触python两年时间,之前只看一些基础性的编程书籍,没有往稍微高阶能力去拓展,花了国庆7天闲暇时间阅读了本书,感觉收获颇多...对于刚入这行的同学还是非常推荐阅读本书,工作中与团队合作还是需要书中涉及的知识点。我非常认同编码前学习编程规范的论点,无论新人还是老人,shi一样的代码对于项目管理来说就是一个灾难。幸好赖勇浩老师在这方面分享的东西较多,让我从c切换至python已经变得非常习惯

精彩短评 (总计50条)

  •     适合有些python基础的人读
  •     面试的时候还真撞到一些,不过那个时候读的太浅了。借给学弟,学弟好像很受用,准备再看一遍。
  •     入门到进阶的必备
  •     对一些坑和一些疑难问题有些解答
  •     去年还是在实习单位的时候就叫公司买过, 前段时间又找来翻了翻 真心不错(*๓´╰╯`๓)♡
  •     有些许bug,但是不影响整本书,感觉还是挺实用的很多建议
  •     比较离散的讲了很多点
  •     还不错的书,花几个晚上看完了。后面的部分,功能太高级,看不太懂 https://www.zybuluo.com/laiyonghao/note/21977 勘误
  •     和这本书不知道啥关系 https://www.douban.com/doubanapp/dispatch?uri=/book/26709315/
  •     * 粗糙的过了一遍,有收获,但是排版错误实在是多得令人发指。 * 自己基础还不是很好,以后要找个时间把基础好好地补一补。
  •     对学习 Python 的比较有用,没什么明显的错误。比较熟悉的可能得不到多少收获。
  •     当复习资料,呵呵
  •     内容安排其实感觉还算充实的,基本都是围绕着Python展开的,大部分内容都能提起我的兴趣,当然,估计是因为我Python了解的还不够多吧。 最大的弊病可能也是通病,书中的大部分代码排版都让人看着眼睛不舒服。
  •     有些地方讲的还不错,拿来当手册书参考
  •     整体不错 深浅皆有
  •     实用。
  •     87
  •     非常有用的一本书,对代码规范的提高很有帮助
  •     烂书
  •     适合入门 Python 不久的,已经加入 Python 进阶套餐。
  •     in 1h
  •     介绍并解释工程中常用的python错误写法,但有些bug
  •     蛮适合新手阅读的,提供了很多不错的建议。由于内容涉及到python编程的各个方面,所以很多地方都只是蜻蜓点水。新手可以通过这本书大概了解python编程需要注意的地方
  •     当年阅读的时候,感觉有抄袭《Python Cookbook》的地方,目前尚未确定,先暂行搁置。
  •     必读
  •     SA推荐
  •     看完基础教程再看下这本,基本上就算python入门了
  •     还可以啊。
  •     略失望~
  •     总算是初略的看了一遍了
  •     还可以,好像stackoverflow回答集锦
  •     废话多了 没有营养的介绍性语句就别写了
  •     还不错的建议,各种边边角角,但是需要注意的是可能你需要一定的阅历才能体会到书中的技巧。还有建议可以配合这本书阅读,《Python进阶》(Intermediate Python 中文版) https://eastlakeside.gitbooks.io/interpy-zh/content/
  •     这书定位有点怪,知识点有很浅的也有很深的,深的部分基本没展开讲。我很怀疑如果读者没看过其他深入介绍Python的书能否看懂,但是如果读者已经看过了,又何必来看这本呢?
  •     还说得过去的Python进阶读物。
  •     跟shit一样,不知道是python没得救还是作者水平渣。
  •     收获颇丰
  •     学到了很多东西,没想到是国人写的,感觉很用心。
  •     个人觉得是挺好的一本书,提供了进阶python的窗口(多看排版的电子书很多错误,这是个瑕疵)
  •     过了一遍,写python要更加的pythonic
  •     扩充知识面。
  •     涉及面很广,很多问题很实用很容易在开发项目过程中遇到。
  •     编程提高
  •     基本涵盖了python的坑。。。
  •     有很多Python Tips,很不错。
  •     初入Python,吃瓜群众来学学经验。我的代码洁癖什么时候能改改呢...
  •     适合总结技巧注意点。
  •     有点clean code 和重构的意思~ 后面拿项目操练一把~
  •     马上快读完 其实想给4星。但是里面真的太多 细节可以体现出作者不够用心。 包括建议48 49 近乎分裂的写法。前面还是threading.Thread.__init__() 后面分分钟super(xxx,xx).__init__() 。 这种问题不计其数。排版之类的 更不用说了简直乱七八糟 要人命。 若不是感觉内容还是非常值得一看,真的想直接丢了烧掉。 如果有第二版的话 好好改改吧。
  •     最好能顺便看一下 Effective.Python.59.Specific.Ways.to.Write.Better.Python
 

外国儿童文学,篆刻,百科,生物科学,科普,初中通用,育儿亲子,美容护肤PDF图书下载,。 零度图书网 

零度图书网 @ 2024