Python编程之美:最佳实践指南
  • 推荐0
  • 收藏11
  • 浏览2.1K

Python编程之美:最佳实践指南

Reitz,Schlusser (作者)  夏永锋 (译者) 汪达文 (责任编辑)

  • 书  号:978-7-121-34757-3
  • 出版日期:2018-08-27
  • 页  数:320
  • 开  本:16(178*233)
  • 出版状态:上市销售
  • 原书名: The Hitchhiker's Guide to Python: Best Practices for Development
  • 原书号:9781491933176
  • 维护人:刘皎
纸质版 ¥89.00
本书是Python用户的一本百科式学习指南,由Python社区数百名成员协作奉献。
全书内容分为三大部分。第一部分是关于如何配置使用Python编辑工具的;第二部分深入学习地道Python风格的代码范例;第三部分研究Python社区常用的一些代码库。
本书适合有一定Python基础的人员学习,帮助你迅速从小工修炼成专家,编写出高质量的代码!
暂无
译者序

从毕业至今,我在互联网行业从事软件研发工作已将近五年。这五年间,我做过后端开发、前端开发、大数据处理等,使用过的编程语言包括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 访问该页。
要给出本书意见或者询问技术问题,请发送邮件到bookquestions@oreilly.com。
更多有关书籍、课程、会议和新闻的信息,请见网站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,以及其他许许多多工作在幕后的人,
感谢你们的付出,让本书如此完美。

目录

目录
前言 ........................................................................................... 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
动态类型 .......................................................................................................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

本书勘误

印次
  • 页码:190  •  行数:倒数5  •  印次: 1  •  修订印次: 3

    **for docopt import docopt
    改为
    from docopt import docopt

    zyt312074545 提交于 2018/11/6 22:39:05
    汪达文 确认于 2018/11/13 15:33:33

读者评论

  • 页码:69 • 行数:例子代码(表4-2——好的例子) • 印次:2

    def get_answer(a):
    return ‘answer is {}’.format(a)
    a = get_answer(1)
    items_string = ‘a b c d’ #此处定义变量名为:items_string
    items_list = items.split(‘ ‘) #此处应该是items_string.split(‘ ‘)
    items = set(items_list)

    涛崽子发表于 2018/12/5 14:11:48

相关图书

Python编程与3D物理学仿真(视频版)

张继春 (作者)

本书将Python编程和物理力学知识同步结合起来,通过编程将物理概念和物理过程进行3D可视化展 现,帮助读者在3D场景下加深对物理知识的理解和掌握,从而培养读者...

¥89.90

Photoshop设计师精通之道:摄影+平面+UI+网店实战全解

委婉的鱼 (作者)

近些年,Photoshop软件在平面设计、广告摄影、影像创意、网页制作、后期修饰、视觉创意及界面 设计中的重要地位越来越不可被撼动,学好Photoshop是一个...

¥62.30

利用Python轻松学数学

蹇 彤 (作者)

本书将Python编程的基本知识和中小学数学知识紧密结合起来,在介绍Python知识的同时穿插数学趣题和难题的讲解,以引导读者从一个全新的角度来看待编程、体验编...

¥69.00

Python接口自动化测试

王浩然 (作者)

本书主要介绍如何用Python实现接口自动化测试。全书主要内容包括接口基础、接口手工测试、编程前的准备、用Python处理MySQL数据库、用Python发送H...

¥59.00

Lua程序设计(第4版)

Roberto Ierusalimschy (作者) 梅隆魁 (译者)

本书由 Lua 语言作者亲自撰写,针对 Lua 语言本身由浅入深地从各个方面进行了完整和细致的讲解。作为第 4 版,本书主要针对的是 Lua 5.3,这是本书撰...

¥89.00

Python网络安全教科书

胡松涛 (作者)

本书是一本黑客技术的入门实战书籍,从最初的工具选择,一直到最后的攻击演示,由浅入深地引导读者全面系统地掌握网络安全防范技术,借助Python打造更安全的网络。<...

¥69.00