描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787121347573
本书由Python社区的大神Kenneth Reitz发起并组织编写,由社区数百名开发者集体奉献。*的特色在于,近乎完整地总结了在Python编程中会用到的各种实践技巧和经验,涵盖众多主流的应用场景,并告诉你如何提高效率、避免踩坑、编写高质量的代码。
本书涉及开发环境和部署、编写符合Pythonic品味的代码、各应用场景下主流的Python解决方案、学习资源推荐等多个方面,有足够的广度也有合适的深度。不仅如此,书中还分享了阅读代码的思路、方法和技巧,告诉你为什么这么设计……并清晰地呈现了项目结构图,有极强的学习价值。
它就像一位导师,从你步入Python编程开发的大门时起,便详细地告诉你哪些应该做,哪些不应该做以及为什么这样选择,如何做技术选型、各自的优缺点……让你在零起步的基础上,便能安心地、迅速地上手实践。
本书不仅适合初学者入门,也适合资深人士作为案头参考。
前言 /xix
第1 部分 起步
第1 章 选择一个解释器 / 3
Python 2 与Python 3 的状况对比 /3
建议/3
那就选择Python 3 吗 /4
Python 的不同实现/4
CPython /5
Stackless /5
PyPy/5
Jython /5
IronPython /6
PythonNet /6
Skulpt /6
MicroPython /7
第2 章 恰当地安装Python / 9
在Mac OS X 上安装Python /9
Setuptools 和pip /11
virtualenv / 11
在Linux 上安装Python /12
Setuptools 和pip ./12
开发工具 /13
virtualenv /14
在Windows 上安装Python /15
Setuptools 和pip /17
virtualenv /17
商业化Python 二次发行版 /18
第3 章 搭建开发环境 / 21
文本编辑器 /21
Sublime Text /22
Vim/23
Emacs /25
TextMate/26
Atom /26
Code /26
IDE/27
PyCharm/IntelliJ IDEA /28
Aptana Studio 3/Eclipse LiClipse PyDev /29
WingIDE/29
Spyder /30
NINJA-IDE /30
Komodo IDE /30
Eric(Eric Python IDE) /31
Visual Studio /31
增强型交互式工具 /32
IDLE /32
IPython /32
bpython /33
环境隔离工具 /33
虚拟环境 /33
pyenv /35
Autoenv/36
virtualenvwrapper /36
Buildout /37
Conda /38
Docker /39
第2 部分 步入正题
第4 章 编写高质量的代码 / 43
代码风格 /43
PEP 8/43
PEP 20(又名Python 之禅) /44
一般性建议 /45
约定 /52
习语 /55
常见陷阱 /58
组织好项目的结构 /61
模块 /61
包 /65
面向对象编程 /66
装饰器 /67
面向对象编程/ 66
装饰器/ 67
动态类型/ 68
可变类型和不可变类型/ 69
管理依赖 / 71
测试代码 / 72
测试的基础知识 / 73
举例说明 /76
其他流行工具/ 80
文档 / 82
项目文档 /82
项目配套发行文档/ 83
文档字符串与块注释 / 84
日志 /84
在库中使用logging/ 85
在应用中使用logging/ 86
选择许可证 /88
上游许可证/ 88
许可证选项 /89
软件许可相关的学习资源/ 90
第5 章 阅读高质量的代码 / 91
共同特征 /92
HowDoI/ 92
阅读单文件脚本/ 93
取自HowDoI 的结构示例/ 96
取自HowDoI 的风格示例/ 97
Diamond / 99
阅读一个更大的应用程序 / 99
取自Diamond 的结构示例/ 105
取自Diamond 的风格示例 /109
Tablib / 111
阅读一个小型库 / 112
取自Tablib 的结构示例 /115
取自Tablib 的风格示例 /123
Requests /126
阅读一个更大的库/ 126
取自Requests 的结构示例 /130
取自Requests 的风格示例 / 134
Werkzeug/ 139
阅读一个工具包的代码/ 140
取自Werkzeug 的风格示例 /148
取自Werkzeug 的结构示例 /149
Flask / 156
阅读一个框架的代码 /156
取自Flask 的风格示例 / 163
取自Flask 的结构示例 / 164
第6 章 交付高质量的代码 /169
有用的词汇和概念 / 170
打包你的代码/ 171
Conda/ 171
PyPI /171
冻结你的代码 / 174
PyInstaller /176
cx_Freeze /178
py2app /179
py2exe /180
bbFreeze /181
Linux 已构建分发包的打包技术 / 181
可执行的ZIP 文件 /183
第3 部分 场景化指南
第7 章 用户交互/ 187
Jupyter Notebooks 项目/ 187
命令行应用 /188
图形化用户界面应用 / 196
窗口部件库/ 196
游戏开发 /202
Web 应用/ 203
Web 框架 微框架/ 203
Web 模板引擎/ 206
Web 部署 /212
第8 章 代码管理和改进 /215
持续集成 / 215
系统管理/ 216
服务器自动化 /218
系统和任务监控/ 222
加速 /225
与C C FORTRAN 库进行交互/ 235
第9 章 软件接口 /239
Web 客户端库/ 240
Web API/ 240
数据序列化 /245
分布式系统 /248
网络编程 /248
密码技术/ 254
第10 章 数据操作/ 261
科学应用/ 262
文本操作和文本挖掘/ 266
Python 标准库中的字符串工具 / 266
图像操作 / 269
第11 章 数据持久化/ 273
结构化文件 / 273
数据库接口库 /274
附录A 补充说明/ 289
从毕业至今,我在互联网行业从事软件研发工作已将近五年。这五年间,我做过后端开发、前端开发、大数据处理等,使用过的编程语言包括Python、PHP、Go、Java、JavaScript 等。
虽说编程语言各异,但是我使用它们来写各种项目的代码始终坚持两点:代码可读性和自解释性/ 自文档性(self-documentation)。这很大程度上应该是受到Python 语言设计哲学的影响——追求简单、易读、易懂的代码。
很多人可能会认为这两点其实均可归结为代码可读性一点,但我想做点区分。代码可读性突出对代码阅读者视觉上的影响,即在视觉效果上是否存在对阅读者不必要的理解干扰,比如必要的空行、变量定义与使用之间的距离、函数体/ 逻辑分支是否过长、逻辑表达是否直观等。可读性高的代码通常都非常漂亮,令人赏心悦目。自解释性代码则更
侧重语义层面,比如变量名称、函数名称、类名是否恰当,函数、方法、API 职责是否单一,工程目录结构、包、模块拆分是否符合“高内聚、低耦合”原则等。写代码以这两点为原则,可以极大地提高个人以及团队的工作效率和工作质量。
本书作者Kenneth Reitz 于2011 年发布Requests 这个HTTP 请求工具库,提出“forhumans”的理念,强调软件/ 工具库应该友好易用,这一理念本质上是对Python 哲学(特别是上述两点)的一种引申和发扬。之后Reitz 在一些Python 大会上做技术分享,宣扬“for humans”的理念,对Python 社区产生了巨大影响。我在次用Requests 库之后,
便很少使用Python 标准库中的urllib 和urllib2 了,现在标准库文档中也特别建议开发者使用Requests。
因为对“for humans”理念的认同,也因为我经常使用Requests,所以当Reitz 在GitHub上邀请我翻译Requests 文档中文版时,我欣然接受,和本书的另一位译者邦杰共同翻译了Requests 文档的首个官方中文版。
在Reitz 发起“The Hitchhiker’s Guide to Python!”项目(也就是本书的社区开源版)后,我一直跟进阅读,收获巨大。后来得知这本开源书籍正式出版,欣喜若狂,辗转咨询多人,联系到刘皎老师,申请了本书的翻译工作。但是,后来发现翻译的工作量远远超出预估,除一些主观原因外,主要因为本书内容的广度和深度。
广度:本书由 Python 社区数百人共同创作而成,可以视作Python 小百科全书。第1~3 章指导读者按照自己的需求选择安装配置Python 版本/ 发行版、开发环境等。第7~11 章则针对不同的应用场景,从多个维度甄选并对比了大量的Python 库,读者可以“按图索骥”地做出自己的选择,从而节约大量的时间精力。因为译者的Python 开发经验主要集中在Web 开发和数据处理上,对于很多应用场景下的Python库不太熟悉,所以翻译之前花费了大量时间来学习和理解。
深度:针对 Python 新手的核心需求,本书探讨了大量的实践。其中第4~5 章通过大量示例具体地阐释了“Python 之禅”:如何编写高质量的Python 代码,并精选若干高质量的知名Python 开源项目,详细介绍如何通过阅读源码来提升编程技术水平。虽说在Python 社区几乎人人都知道“Python 之禅”,但如何落实在开发实践中估计极少有人能说得清楚。对照书中的实例阐释,译者反复推敲“Python 之禅”的译文,终敲定的译文也不是特别令自己满意。
相比原计划,本书终延期近一年才翻译完成。除了歉意,我内心满是感谢:感谢邦杰中途友情加入,帮忙翻译了第4~6 章的初稿,这三章的难度和文字量都非常大;感谢编辑刘皎对我拖稿的次次容忍和耐心等待;感谢妻儿的理解,我欠了你们太多的陪伴。
虽然我已尽自己所能地保证译文质量,但是错误和瑕疵难免,在此也请读者原谅。希望你们阅读愉快!
夏永锋
写于上海
前言
Python 是一个大世界,大到让你难以置信!
本书不是教你如何学习Python 语言的(我们引用了大量优秀资源供你学习),而是一份
Python 社区推荐工具和实践的(有态度的)业内指南。本书的目标读者是初级到中
级水平的Python 程序员,他们可能有志于使用Python 为开源项目做贡献、开启一段职
业生涯或开创一家公司,不过临时用用Python 的人也会发现第1 部分和第5 章的内容对
自己颇有帮助。
本书的第1 部分帮助读者选择适合各自场景的文本编辑器或交互式开发环境(例如,常
用Java 的读者可能偏爱Eclipse,用它安装Python 开发插件),并调研了其他可选择的
解释器,这些解释器也许可以满足那些你还不知道的Python 能够解决的需求(例如,
MicroPython 是基于ARM Cortex-M4 芯片的一个实现)。第2 部分重点介绍开源社区公
认的范例代码,展示地道的Python 代码风格,希望能够鼓励读者进一步深入阅读和尝试
开源代码。第3 部分简要地调研了大量的Python 社区常用库,让读者初步认识到目前
Python 涉及的领域。
本书纸质版的所有版税都捐赠给Django Girls,这是一个充满欢乐的全球性组织,旨在
组织免费的Django 和Python 讲习班,创建开源的在线教程,策划令人惊叹的技术体验
活动。如果有意愿,那么你可以从http://docs.python-guide.org/en/latest/notes/contribute/
上了解如何为本书的在线版本做贡献。
xx | 前言
本书的使用约定
这个图标标识一个提示或建议。
这个图标标识一个一般性注解。
这个图标标识一个警告信息。
Safari? 图书在线
Safari? 图书在线是一个点播式电子图书馆,以图书和视频的形式
展示来自技术和商业领域的世界权威作者的专业内容。
技术专家、软件开发者、Web 设计者及商业和创意专业人士都使用Safari? 图书在线作为
科研、解决问题、学习和认证培训的核心资源。
Safari? 图书在线为企业、政府部门、教育机构,以及个人提供一系列的购买计划。
其成员可以访问无数的书籍、培训视频及正式出版前的草稿,这些资源存放在一个
完全可检索的数据库中,资源来源于各大出版商,如O’Reilly Media、Prentice Hall
Professional、Addison-Wesley Professional、Microsoft Press、Sams、 Que、Peachpit
Press、Focal Press、Cisco Press、John Wiley & Sons、Syngress、Morgan Kaufmann、
IBM Redbooks、Packt、Adobe Press、FT Press、Apress、Manning、New Riders、
McGraw-Hill、Jones & Bartlett、Course Technology 等200 多家出版商。更多关于
Safari? 图书在线的信息,请访问https://www.safaribooksonline.com/。
前言 | xxi
联系我们
请将对本书的评价和发现的问题通过如下地址通知出版社。
美国:
O’Reilly Media, Inc.
1005 Gravenstein Highway North
Sebastopol, CA 95472
中国:
北京市西城区西直门南大街2 号成铭大厦C 座807 室(100035)
奥莱利技术咨询(北京)有限公司
我们提供了本书网页,上面列出了勘误表、示例和其他信息。请通过http://bit.ly/restful-
Web-clients 访问该页。
要给出本书意见或者询问技术问题,请发送邮件到[email protected]。
更多有关书籍、课程、会议和新闻的信息,请见网站http://www.oreilly.com。
在Facebook 找到我们:http://facebook.com/oreilly。
在Twitter 上关注我们:http://twitter.com/oreillymedia。
在YouTube 上观看:http://www.youtube.com/oreillymedia。
致谢
欢迎各位朋友阅读《Python 编程之美:实践指南》。
据我所知,本书的成书方式是首创的:由一个作者(也就是我,Kenneth)设计策划,而
大部分内容由来自世界各地的数百人免费提供。人类有史以来很少有过以这种技术方式
达成这种规模的美妙协作。
本书得以完成,归功于以下3 方的共同努力。
1. 社区
爱把我们凝聚在一起,克服了万千困难。
xxii | 前言
2. 软件项目
Python、Sphinx、Alabaster 和Git。
3. 在线服务
GitHub 和Read the Docs。
后,我想对Tanya 致以衷心的感谢,她克服了全部的艰难困苦,把这项工作转变成
图书形式,并将一切准备妥当交付出版社正式出版。还有极其出色的O’Reilly 团队:
Dawn、Jasmine、Nick、Heather、Nicole、Meg,以及其他许许多多工作在幕后的人,
感谢你们的付出,让本书如此完美。
本书是Python开发者的实操指引,Kenneth Reitz
出品,必属精品。
——刘志军
公众号“Python之禅”出品人
本书追根溯源,从代码风格、设计哲学、开源项目等各方面为我们详述了Python强大的生态系统,书名中的“*实践指南”名副其实。
——阿橙
公众号“Python中文社区”主编
本书不仅仅是一本Python教程,更多的是通过一些优秀项目源码,向读者阐释了如何写出更优雅的Python代码……有助于Python学习者完成向 Pythonic 的转变。
——Crossin
公众号“Crossin的编程教室”作者、码课创始人
《Python编程之美:*实践指南》一书帮助开发者破解了一些常见疑惑,提供了具有实践价值的指南。
——齐伟
“跟老齐学Python”系列图书作者
学习一门编程语言,从入门到进阶的一条捷径就是学习前辈专家的开发经验,而这本书正是这些专家经验的总结。
——杨学光
Django中文社区发起人
这真是一本令人惊叹的好书!它并不是教授Python语言本身的,而是假定你已经有了一定的编程基础。它阐述的是编程相关的知识点:何时、何地、怎样运用Python,如何使用各类Python工具……这使得你可以高效地编写代码、运维程序,并与其他程序优雅的交互。
——读者
来自amazon.com
精炼且详略得当,这本《Python编程之美:*实践指南》一定会让你深入了解Python大世界。
——Raymond Hettinger,杰出的Python核心开发者
本书是Python开发。对于新手来说,它是一份记录社区约定和*实践的学习资源,其价值不可估量。
——Eric Holscher,Read the Docs公司(readthedocs.org)的联合创始人
评论
还没有评论。