Python高级编程(第2版)
上QQ阅读APP看书,第一时间看更新

前言

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联系我们,我们会尽力为你解决。