购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

前言

Python已成为现代计算领域的通用语言。本书的核心观点是,Python是目前最重要的编程语言,掌握Python可带来巨大的收益。本书旨在传授Python相关技术、模式和工具,让你的Python编程技能实现质的飞跃。

如果你接触过Python,本书将极大地提升你的编程能力和效率,同时还能大幅压缩调试代码的时间。

目标读者

如果你具有Python基础,并且掌握了编程入门内容,本书正是为你量身而写的。本书也适合想要学习更高级技术和方法的读者阅读,让你用Python实现更多目标。

本书不适合浅尝辄止的Python学习者。Python很重要,掌握Python回报巨大。

本书也不适合没有抱负的人。在撰写本书时,笔者希望读者能打造一份令自己自豪的职业,从事具有积极影响力的工作。

此外,本书不适合思维僵化的人。优秀工程师和“普通”程序员的区别在于,前者具有判断清晰、思维新颖、洞察细微的特点。

学习的两个层面

学无止境。读者真正想要的是培养新能力,因此本书包括两个学习层面。

首先是信息层面。信息层面包括阅读内容或者聆听后记住。将事实、观点和其他信息存入脑海,以便日后回忆、复述给其他人,或用于逻辑推理。

信息很重要,是学习的基础。

其次是更深层面的学习,即能力层面。当编写代码时,可以实现以前达不到的需求。

这两个层面都很重要,但能力才是真正的关键所在。

信息可能具有欺骗性。你感觉自己理解了知识,但在真正实践时,却常常盯着空白的编辑器无从下手。

你肯定有过类似的经历,每个程序员都不例外。

其实,你只是在信息层面进行了学习,尚未达到能力层面。当你真正达到能力层面时,你所需要的信息会自然而然地在脑海中涌现,就像思考本身一样自然。

大多数情况下,读书或看视频只能在信息层面传授知识。但本书旨在通过多种方式改变这种情况。

本书编写方式

有两个存在已久的问题。

问题1:要学的东西太多。

问题2:由于技术和文化飞速变革,社会发展导致人们用于专注学习的时间和精力大幅减少。

这两个问题极有可能是人们痛苦的根源。但有一条出路,即所谓的第一性原理。

在人类活动的任何领域,包括Python编程,都存在基本概念,概念是一切的基础。概念涉及重要的差异、抽象概念和思维模型。当你掌握了第一性原理,就会发现自己能穿透繁杂信息,更轻松地开展工作。

第一性原理就像加速器,为人们提供了解决诸多问题的工具、资源和能力。实际上,这符合“95/5”法则,你只需专注学习其中5%的知识,其余知识的学习就像多米诺骨牌一样,迎刃而解。

这5%的知识就是我们所说的Python第一性原理,也是本书的核心所在。

因此,本书在内容上会有所取舍,并非关于Python知识的一站式全面指南。此外,本书基于实际开发经验(来自工程师团队的项目实践),对实践经验进行了总结。

代码可维护性、稳健性和可读性比其他任何方面都重要。在利用强大的抽象概念与开发团队成员都易于理解的代码之间,本书进行了权衡。

在整本书中,笔者非常关注软件开发中的认知层面。为了编写出让所有人都能轻松、快速且准确理解的代码,变量和函数命名是关键的一环。但命名远不止于语法层面,还涉及使用哪些语言特性和库资源,以及不使用哪些。

本书有意控制了篇幅,毕竟要学习的内容已经很多了。本书聚焦于最有价值的内容,目标是让读者受益多年。

可调用对象的约定

本书采用了一种可能会引起争议的写作约定。当在表述中提及标识符名称时,笔者使用等宽字体。所以变量“x”会写成x,类“Point”会写成Point,等等。

争议之处在于,当提及函数或方法时,笔者会在标识符名称后附加一对括号。所以函数“compute”会写成compute(),而非compute。即使调用该函数时必须传入参数,也会这样写。“()”本质上是一种注释,表明该标识符是可调用的。以笔者教授和撰写高级Python内容的经验来看,这样有助于理解,所以本书始终遵循这一约定。

本书未涉及的内容

以下是本书省略的主题:

●标准库之外的内容。仅仅是Python及其内置功能,就包含足够的深度。

●类型注释。本书付梓之时,类型注释仍未完全敲定。尽管类型注释对部分人很重要,但使用尚不普遍。

●数据类。关于数据类的教程数不胜数,第6章已经是本书篇幅最长的章。

●并发编程。大多数Python程序都是单线程的。要全面讲解线程、多进程和异步,本书篇幅可能翻倍。

●任何依赖特定Python版本的内容。不过,最佳的Python模式和策略往往不受版本影响。本书专注的正是编程设计模式和策略。

●不常用的特性,如仅关键字参数、仅位置参数、条件(三元)表达式、模式匹配等。这些特性虽然有用,但更适合其他图书。

●人们喜欢的其他主题(肯定会有这种情况)。

本书所涵盖的内容涉及Python的关键知识点,其中许多并非新内容,却被严重低估和误解,但实际上这些内容对所有Python开发者都极具价值。

如果读者最喜欢的Python主题不在本书中,笔者引用法国诗人Paul Valéry的名言:“艺术作品永远不会完成,只会被放弃。”

笔者投入了近十年,本书才创作而成,相信对一些读者而言,它是极有价值的。

充分利用本书

最终,能否将本书的知识转化为能力层面的学习成果,取决于读者自身。读者一定要付诸实践,才能真正掌握书中内容。

为提供助力,笔者为每一章都设计了编程练习,还准备了其他有趣的学习资源,这些都是本书读者专享的。若想获取资源,以及接收未来新书发布的邮件通知,可访问 https://powerfulpython.com/register ,并按说明操作。

如果想了解专业培训,可访问 https://powerfulpython.com ,浏览网站资源。如果读者对本书有反馈、勘误或对未来版本的建议,请发送至 aaron@powerfulpython.com

排版约定

本书使用以下排版约定:

斜体( Italic

表示新的术语、URL、电子邮件地址、文件名和文件扩展名。

等宽字体(Constant width)

用于程序清单,以及段落中的程序元素,例如变量名、函数名、数据库、数据类型、环境变量、语句以及关键字。

等宽粗体( Constant width bold

表示应由用户直接输入的命令或其他文本。

等宽斜体( Constant width italic

表示应由用户提供的值或由上下文确定的值替换的文本。

该图示表示提示或建议。

使用代码示例

这里的代码是为了帮助你更好地理解本书的内容。通常,可以在程序或文档中使用本书中的代码,而不需要联系O’Reilly获得许可,除非需要大段地复制代码。例如,使用本书中所提供的几个代码片段来编写一个程序不需要得到我们的许可,但销售或发布O’Reilly的示例代码则需要获得许可。引用本书的示例代码来回答问题也不需要许可,将本书中的很大一部分示例代码放到自己的产品文档中则需要获得许可。

非常欢迎读者使用本书中的代码,希望(但不强制)注明出处。注明出处时包含书名、作者、出版社和ISBN,例如: Powerful Python:Patterns and Strategies with Modern Python ,作者Aaron Maxwell,由O’Reilly出版,书号978-1-098-17570-2。

如果读者觉得对示例代码的使用超出了上面所给出的许可范围,欢迎通过 permissions@oreilly.com 联系我们。

O’ Reilly在线学习平台(O Reilly Online Learning)

40多年来,O'Reilly Media致力于提供技术和商业培训、知识和卓越见解,来帮助众多公司取得成功。

我们拥有独一无二的专家和革新者组成的庞大网络,他们通过图书、文章、会议和我们的在线学习平台分享他们的知识和经验。O’Reilly的在线学习平台允许你按需访问现场培训课程、深入的学习路径、交互式编程环境,以及O’Reilly和200多家其他出版商提供的大量文本和视频资源。有关的更多信息,请访问 http://oreilly.com

如何联系我们

对于本书,如果有任何意见或疑问,请按照以下地址联系本书出版商。

美国:

O'Reilly Media,Inc.

1005 Gravenstein Highway North

Sebastopol,CA 95472

中国:

北京市西城区西直门南大街2号成铭大厦C座807室(100035)

奥莱利技术咨询(北京)有限公司

对于本书中文版的勘误内容,请发送电子邮件至 errata@oreilly.com.cn

本书配套网站 https://oreil.ly/powerful_python 上列出了勘误表、示例以及其他信息。

关于书籍和课程的新闻和信息,请访问我们的网站 http://oreilly.com

我们在Facebook上的地址: http://facebook.com/oreilly

我们在LinkedIn上的地址: http://linkedin.com/oreilly-media

我们在YouTube上的地址: http://www.youtube.com/oreillymedia

致谢

本书的创作历时近十年,我要感谢很多人。

首先,我要感谢数千名读过本书早期自费出版版本的读者,其中包括数百名参加过“Python训练营”的学员。从第一天起,大家就提出了许多精彩的问题与评论,并指出了错误,帮助我不断完善本书。

感谢出色的O’Reilly团队。如果你正在考虑出版图书,强烈推荐O’Reilly。特别感谢策划编辑Virginia Wilson、制作编辑Aleeya Rahman;审稿编辑Sarah Grey和Helena Stirling检查出许多书稿错误;Brian Guerin促成了本书的启动;Yasmina Greco精心组织了O’Reilly的线下培训课程,为本书提供了丰富的素材。对于没能提及的人,或是在幕后默默付出的工作人员,我对他们深感歉意。

技术审稿人也贡献巨大。Peter Norvig对最后一版自费出版的图书提出了深刻的反馈,极大地提升了本书的质量;Rodrigo Girão Serrão在Python语言方面卓越的专业知识,避免了书中许多可能出现的严重错误;Jess Males改进了许多文字,让本书更易理解;Han Qi为本书挑出了许多错误。感谢所有人尽其所能,协助创作本书。 qtGFA9OIfjuouGTp7PxT9uC54N+RADCJUv8X+uEKsRSrGQ/E2FH4eo3PG+liQvWD

点击中间区域
呼出菜单
上一章
目录
下一章
×