前言
Python很棒!
从20世纪80年代末出现的最早版本到当前版本,Python的发展一直遵循着相同的理念:提供一个同时具备可读性和生产力的多范式编程语言。
人们曾经将Python看作另一种脚本语言,认为它不适合构建大型系统。但多年以来,在一些先驱公司的努力下,Python显然可以用于构建几乎任何类型的系统。
实际上,许多其他语言的开发者也醉心于Python,并将它作为首选语言。
如果你购买了这本书,可能已经知道这些内容了,所以无需再向你证明这门语言的优点。
本书展现了作者多年构建各种Python应用的经验,从几个小时完成的小型系统脚本,到许多开发人员历经数年编写的大型应用。
本书描述了开发人员使用Python的最佳实践。
本书包含了一些主题,这些主题并不关注语言本身,而是更多地关注如何利用相关的工具和技术。
换句话说,本书描述了高级Python开发人员每天的工作方式。
本书内容
第1章介绍了Python语言及其社区的现状。本章展示了Python不断变化的方式及原因,还解释了为什么这些事实对任何想要自称Python专家的人来说是很重要的。本章还介绍了最流行和最公认的Python工作方式——常用的生产力工具和现已成为标准的约定。
第2章深入介绍迭代器、生成器、描述符等内容。本章还包括关于Python习语和CPython类型内部实现的有用注释,这些类型的计算复杂度是对这些习语的阐释。
第3章介绍了语法最佳实践,但重点放在类级别以上。本章包括Python中更高级的面向对象的概念和机制。学习这些知识是为了理解本章最后一节的内容,其中介绍的是Python元编程的各种方法。
第4章介绍了如何选择好的名称。它是对PEP 8中命名最佳实践的扩展,并且给出了一些如何设计良好API的提示。
第5章介绍如何创建Python包以及使用哪些工具,以便在官方的Python包索引或其他包仓库中正确地分发。对于Python包还补充了一些工具的简要回顾,这些工具可以让你用Python源代码创建独立可执行文件。
第6章主要针对Python Web开发人员和后端工程师,因为讲的是代码部署。本章解释了如何构建Python应用,使其可以轻松部署到远程服务器,还介绍了可以将这个过程自动化的工具。本章是第5章的延续,因此还介绍了如何使用包和私有包仓库来简化应用部署。
第7章解释了为什么为Python编写C扩展程序有时可能是一个好的解决方案。本章还展示了只要使用了正确的工具,它并不像想象中那么难。
第8章深入介绍了项目代码库的管理方式,还介绍了如何设置各种持续开发流程。
第9章包含文档相关的内容,提供了有关技术写作和Python项目文档化方式的建议。
第10章解释了测试驱动开发的基本原理,还介绍了可用于这种开发方法的工具。
第11章解释了何为优化,介绍了分析技术和优化策略指南。
第12章是对第11章的扩展,为Python程序中经常出现的性能问题提供了一些常用的解决方案。
第13章介绍了Python并发这一宏大的主题。本章解释了并发的概念、何时需要编写并发应用,以及Python程序员主要使用的并发方法。
第14章用一套有用的设计模式以及Python的代码示例对本书进行了总结。
阅读本书的前提
本书面向的是可以在任何操作系统上使用Python 3进行软件开发的人员。
这不是一本面向初学者的书,所以我假设你已经在开发环境中安装了Python,或者知道如何安装Python。不管怎样,本书考虑到以下事实:不是每个人都需要充分了解Python的最新功能或官方推荐的工具。因此,第1章概述了常见的实用程序(例如虚拟环境和pip),这些实用程序现在已经成为Python专业开发人员的标准工具。
目标读者
本书面向的是想要进一步掌握Python的开发人员。开发人员主要指的是专业人士,即用Python编写软件的程序员。这是因为本书主要侧重于工具和实践,它们对于创建高性能的、可靠且可维护的Python软件至关重要。
这并不意味着业余爱好者无法从本书中发现有趣的内容。对于任何对学习Python高级概念感兴趣的人来说,本书都是很棒的。任何具备Python基本技能的人都应该能够读懂本书的内容,虽然经验不足的程序员可能需要一些额外的努力。对于有点落后仍在继续使用Python 2.7或更老版本的人来说,本书也是对Python 3.5的全面介绍。
最后,从阅读本书中受益最多的人群应该是Web开发者和后端工程师。这是因为本书重点介绍了在他们的工作领域中特别重要的两个主题:可靠的代码部署与并发。
本书约定
本书用多种文本样式来区分不同种类的信息。下面是这些样式的示例及其含义解释。
文本中的代码、数据库表的名称、文件夹名称、文件名称、文件扩展名、路径名称、虚拟URL、用户输入和Twitter句柄的格式如下所示:“利用str.encode(encoding, errors)方法,用注册编解码器对字符串进行编码。”
代码块的格式如下所示:
[print("hello world") print "goodbye python2"
如果我们想让你将注意力集中在代码块的特定区域,相关的几行或几项将会被设成粗体,如下所示:
cdef long long fibonacci_cc(unsigned int n) nogil:
if n < 2:
return n
else:
return fibonacci_cc(n -1) + fibonacci_cc(n -2)
命令行的输入或输出如下所示:
$ pip show pip --- Metadata-Version: 2.0 Name: pip Version: 7.1.2 Summary: The PyPA recommended tool for installing Python packages. Home-page: https://pip.pypa.io/ Author: The pip developers Author-email: python-virtualenv@groups.google.com License: MIT Location: /usr/lib/python2.7/site-packages Requires:
新术语和重要词语将以粗体显示。你会在屏幕上看到的单词(例如在菜单或对话框中)将以下面这种文本形式出现:“单击Next按钮可跳转至下一屏”。
警告或重要提示。
提示和技巧。
读者反馈
我们十分欢迎读者的反馈意见。让我们了解你对本书的看法——喜欢哪些内容,不喜欢哪些内容。这些反馈对我们很重要,因为它有助于我们编写出对读者真正有帮助的书。
一般性的反馈请发送邮件至feedback@packtpub.com,并在邮件主题中注明本书的标题。
如果你是某个领域的专家,并且有兴趣写一本书或者参与出版一本书,请参阅我们的作者指南。
客户支持
现在你已经成为这本Packt图书的拥有者,为了让你的购买物超所值,我们还为你提供了许多其他方面的服务。
下载示例代码
你可以用自己的账号在Packt的官方网站下载本书的示例代码文件。如果你是在其他地方购买的本书,可以访问Packt的官方网站并注册,文件会直接通过邮件发送给你。
下载代码文件的步骤如下所示。
• 用你的电子邮件地址和密码登录或注册我们的网站。
• 将鼠标指针悬停在顶部的SUPPORT选项卡上。
• 单击Code Downloads & Errata。
• 在Search框中输入本书的名字。
• 选择你要下载代码文件的书籍。
• 从下拉菜单中选择本书的购买途径。
• 单击Code Download。
你还可以在Packt网站的本书页面单击Code Files按钮来下载代码文件。在Search框输入本书的书名即可访问该页面。请注意,你需要登录Packt账号。
文件下载完成后,请确保用下列软件的最新版本对文件夹进行解压或提取。
• 在Windows上用WinRAR或7-Zip。
• 在Mac上用Zipeg、iZip或UnRarX。
• 在Linux上用7-Zip或PeaZip。
本书的代码包也托管在GitHub,网址为https://github.com/PacktPublishing/Expert-Python-Programming_Second-Edition。在GitHub上还有大量图书和视频资源。快去看一下吧!
勘误
尽管我们已经竭尽全力确保本书内容的准确性,但错误在所难免。如果你发现了书中的错误,无论是正文错误还是代码错误,希望你能将其报告给我们,我们将不胜感激。这样不仅能够减少其他读者的困惑,还能帮助我们改进本书后续版本的质量。如果你需要提交勘误,请访问http://www.packtpub.com/submit-errata,选择相应的书名,单击Errata Submission Form链接,然后输入你的勘误信息并提交。一旦通过验证,我们将接受你提交的勘误,同时勘误内容也将被上传到我们的网站,或者被添加到对应勘误区的现有勘误列表中。
想要查看之前提交的勘误,请访问https://www.packtpub.com/books/content/support,并在搜索框中输入相应的书名。你想查看的信息将出现在Errata下面。
侵权行为
所有媒体在互联网上都一直饱受版权侵害的困扰。Packt坚持对版权和授权进行全力保护。如果你在互联网上发现我社图书任何形式的盗版,请立即为我们提供网址或网站名称,以便我们采取进一步的措施。
请将疑似盗版材料的链接发送到copyright@packtpub.com。
我们感谢你对作者的保护,这有助于我们继续为你提供更有价值的内容。
疑难解答
如果你对本书的某个方面抱有疑问,请通过questions@packtpub.com联系我们,我们会尽力为你解决。