登入帳戶  | 訂單查詢  | 購物車/收銀台( 0 ) | 在線留言板  | 付款方式  | 運費計算  | 聯絡我們  | 幫助中心 |  加入書簽
會員登入 新用戶登記
HOME新書上架暢銷書架好書推介特價區會員書架精選月讀2023年度TOP分類瀏覽雜誌 臺灣用戶
品種:超過100萬種各類書籍/音像和精品,正品正價,放心網購,悭钱省心 服務:香港台灣澳門海外 送貨:速遞郵局服務站

新書上架簡體書 繁體書
暢銷書架簡體書 繁體書
好書推介簡體書 繁體書

八月出版:大陸書 台灣書
七月出版:大陸書 台灣書
六月出版:大陸書 台灣書
五月出版:大陸書 台灣書
四月出版:大陸書 台灣書
三月出版:大陸書 台灣書
二月出版:大陸書 台灣書
一月出版:大陸書 台灣書
12月出版:大陸書 台灣書
11月出版:大陸書 台灣書
十月出版:大陸書 台灣書
九月出版:大陸書 台灣書
八月出版:大陸書 台灣書
七月出版:大陸書 台灣書
六月出版:大陸書 台灣書

『簡體書』编写高质量代码:改善Python程序的91个建议(本书尝试着从基本原则、惯用法、语法、库、设计模式、内部机制、开发工具和性能优化8方面深入探讨编写高质量Python代码的技巧、禁忌和最佳实践。)

書城自編碼: 2404834
分類:簡體書→大陸圖書→計算機/網絡程序設計
作者: 张颖,赖勇浩
國際書號(ISBN): 9787111467045
出版社: 机械工业出版社
出版日期: 2014-06-26
版次: 1 印次: 1
頁數/字數: 262/
書度/開本: 16开 釘裝: 平装

售價:HK$ 153.4

我要買

 

** 我創建的書架 **
未登入.


新書推薦:
寻路:走向西南联大(西南联大文库)
《 寻路:走向西南联大(西南联大文库) 》

售價:HK$ 66.7
短视频Vlog全流程:镜头脚本+运镜技巧+场景主题+后期剪辑
《 短视频Vlog全流程:镜头脚本+运镜技巧+场景主题+后期剪辑 》

售價:HK$ 89.7
英国小史
《 英国小史 》

售價:HK$ 94.3
影响力原则
《 影响力原则 》

售價:HK$ 78.2
德川家康(全十三册)(他用30年活了下来,建立起300年基业)
《 德川家康(全十三册)(他用30年活了下来,建立起300年基业) 》

售價:HK$ 918.9
新知文库·动人的北平
《 新知文库·动人的北平 》

售價:HK$ 34.3
萧条中的生存策略
《 萧条中的生存策略 》

售價:HK$ 57.4
银色瀑布:美国兵工厂与中途岛海战
《 银色瀑布:美国兵工厂与中途岛海战 》

售價:HK$ 79.4

 

建議一齊購買:

+

HK$ 88.5
《Effective Python:编写高质量Python代码》
+

HK$ 127.7
《微信公众平台JSSDK开发实战——公众号与HTML5混合模式》
+

HK$ 109.2
《Flask Web开发 基于Python的Web应用开发实战》
+

HK$ 117.0
《Python网络编程攻略》
+

HK$ 179.4
《Python自动化运维:技术与最佳实践》
編輯推薦:
从基本原则、惯用法、语法、库、设计模式、内部机制、开发工具和性能优化8方面深入探讨编写高质量Python代码的技巧、禁忌和最佳实践
內容簡介:
在通往“Python技术殿堂”的路上,本书将为你编写健壮、优雅、高质量的Python代码提供切实帮助!内容全部由Python编码的最佳实践组成,从基本原则、惯用法、语法、库、设计模式、内部机制、开发工具和性能优化8个方面深入探讨了编写高质量Python代码的技巧与禁忌,一共总结出91条宝贵的建议。每条建议对应Python程序员可能会遇到的一个问题。本书不仅以建议的方式从正反两方面给出了被实践证明为十分优秀的解决方案或非常糟糕的解决方案,而且分析了问题产生的根源,会使人有一种醍醐灌顶的感觉,豁然开朗。
本书针对每个问题所选择的应用场景都非常典型,给出的建议也都与实践紧密结合。书中的每一条建议都可能在你的下一行代码、下一个应用或下一个项目中显露锋芒。建议你将本书搁置在手边,随时查阅,相信这么做一定能使你的学习和开发工作事半功倍。
關於作者:
张颖 资深软件开发工程师,精通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:使用CC++模块扩展提高性能 257
建议91:使用 Cython 编写扩展模块 259
內容試閱
第1章
引论
“罗马不是一天建成的”,编写代码水平的提升也不可能一蹴而就,通过一点一滴的积累,才能达成从量变到质变的飞跃。这种积累可以从很多方面取得,如一些语言层面的使用技巧、常见的注意事项、编程风格等。本章主要探讨Python中常见的编程准则,从而帮助读者进一步理解Pythonic的本质。本章内容包括如何编写Pythonic代码、在实际应用中需要注意的一些事项和值得提倡的一些做法。希望读者通过对本章的学习,可以在实际应用Pythonic的过程中得到启发和帮助。
建议1:理解Pythonic概念
什么是Pythonic?这是很难定义的,这就是为什么大家无法通过搜索引擎找到准确答案的原因。但很难定义的概念绝非意味着其定义没有价值,尤其不能否定它对编写优美的Python代码的指导作用。
对于Pythonic的概念,众人各有自己的看法,但大家心目之中都认同一个更具体的指南,那就是Tim Peters的《The Zen of Python》(Python之禅)。在这一充满着禅意的诗篇中,有几点非常深入人心:
美胜丑,显胜隐,简胜杂,杂胜乱,平胜陡,疏胜密。
找到简单问题的一个方法,最好是唯一的方法(正确的解决之道)。
难以解释的实现,源自不好的主意;如有非常棒的主意,它的实现肯定易于解释。
不仅这几点,其实《Python之禅》中的每一句都可作为编程的信条。是的,不仅是作为编写Python代码的信条,以它为信条编写出的其他语言的代码也会非常漂亮。
(1)Pythonic的定义
遵循Pythonic的代码,看起来就像是伪代码。其实,所有的伪代码都可以轻易地转换为可执行的Python代码。比如在Wikipedia的快速排序条目中有如下伪代码:
function quicksort''array''
if length''array'' ≤ 1
return ''array'' an array of zero or one elements is already sorted
select and remove a pivot element ''pivot'' from ''array'' see ''Choice of pivot'' below
create empty lists ''less'' and ''greater''
for each ''x'' in ''array''
if ''x'' ≤ ''pivot'' then append ''x'' to ''less''
else append ''x'' to ''greater''
return concatenatequicksort''less'', list''pivot'', quicksort''greater''
two recursive calls
实际上,它可以转化为以下同等行数的可以执行的Python代码:
def quicksortarray:
less = []; greater = []
if lenarray quicksort[9,8,4,5,32,64,2,1,0,10,19,27]
[0,1,2,4,5,8,9,10,19,27,32,64]
所以,综合这个例子来说,Pythonic也许可以定义为:充分体现Python自身特色的代码风格。接下来就看看这样的代码风格在实际中是如何体现的。
(2)代码风格
对于风格,光说是没有用的,最好是通过例子来看看,因为例子看得见,会显得更真实。下面以语法、库和应用程序为例给大家介绍。
在语法上,代码风格要充分表现Python自身特色。举个最常见的例子,在其他的语言(如C语言)中,两个变量交换需要如下的代码:
int a = 1, b = 2;
int tmp = a;
a = b;
b = tmp;
利用Python的packagingunpackaging机制,Pythonic的代码只需要以下一行:
a, b = b, a
还有,在遍历一个容器的时候,类似其他编程语言的代码如下:
length = lenalist
i = 0
while i length:
do_sth_withalist[i]
i += 1
而 Pythonic的代码如下:
for i in alist:
do_sth_withi
灵活地使用迭代器是一种Python风格。又比如,需要安全地关闭文件描述符,可以使用以下with语句:
with openpath, ''r'' as f:
do_sth_withf
通过上述代码的对比,能让大家清晰地认识到Pythonic的一个要求,就是对Python语法本身的充分发挥,写出来的代码带着Python味儿,而不是看着像C语言代码,或者Java代码。
应当追求的是充分利用Python语法,但不应当过分地使用奇技淫巧,比如利用Python的Slice语法,可以写出如下代码:
a = [1,2,3,4]
c = ''abcdef''
print a[::-1]
print c[::-1]
如果不是同样追求每一个语法细节的“老鸟”,这段代码的作用恐怕不能一眼就看出来。实际上,这个时候更好地体现Pythonic的代码是充分利用Python库里reversed函数的代码。
print listreverseda
print listreversedc
(3)标准库
写Pythonic程序需要对标准库有充分的理解,特别是内置函数和内置数据类型。比如,对于字符串格式化,一般这样写:
print ''Hello %s!'' % ''Tom'',
其实%s是非常影响可读性的,因为数量多了以后,很难清楚哪一个占位符对应哪一个实参。所以相对应的Pythonic代码是这样的:
print ''Hello %names!'' % {''name'': ''Tom''}
这样在参数比较多的情况下尤其有用。
#字符串
value = {''greet'': ''Hello world'', ''language'': ''Python''}
print ''%greets from %languages.'' % value
%占位符来自于大家的先验知识,其实对于新手而言,有点“莫名其妙”,所以更具有Pythonic风格的代码如下:
print ''{greet} from {language}.''.formatgreet = ''Hello world'', language = ''Python''
str.format方法非常清晰地表明了这条语句的意图,而且模板的使用也减少了许多不必要的字符,使可读性得到了很大的提升。事实上,str.format也成了Python最为推荐的字符串格式化方法,当然也是最Pythonic的。
(4)Pythonic的库或框架
编写应用程序的时候的要求会更高一些。因为编写应用程序一般需要团队合作,那么可能你编写的那一部分正好是团队的另一成员需要调用的接口,换言之,你可能正在编写库或框架。
程序员利用Pythonic的库或框架能更加容易、更加自然地完成任务。如果用Python编写的库或框架迫使程序员编写累赘的或不推荐的代码,那么可以说它并不Pythonic。现在业内通常认为Flask这个框架是比较Pythonic的,它的一个Hello world级别的用例如下:
from flask import Flask
app = Flask__name__
@app.route''''
def hello:
return "Hello world!"
if __name__ == "__main__":
app.run
稍有编程经验的人都可以通过上例认识到利用Python编程极为容易这一事实。一个Pythonic的框架不会对已经通过惯用法完成的东西重复发明“轮子”,而且它也遵循常用的Python惯例。创建Pythonic的框架极其困难,什么理念更酷、更符合语言习惯对此毫无帮助,事实上这些年来优秀的Python代码的特性也在不断演化。比如现在认为像generators之类的特性尤为Pythonic。
另一个有关新趋势的例子是:Python的包和模块结构日益规范化。现在的库或框架跟随了以下潮流:
包和模块的命名采用小写、单数形式,而且短小。
包通常仅作为命名空间,如只包含空的__init__.py文件。
建议2:编写Pythonic代码
如何编写更加Pythonic的代码,与定义什么是Pythonic一样困难。在这里,只能给出一些经验之谈,希望对大家有所帮助。

 

 

書城介紹  | 合作申請 | 索要書目  | 新手入門 | 聯絡方式  | 幫助中心 | 找書說明  | 送貨方式 | 付款方式 香港用户  | 台灣用户 | 大陸用户 | 海外用户
megBook.com.hk
Copyright © 2013 - 2024 (香港)大書城有限公司  All Rights Reserved.