适读人群 :Python开发人员以及任何对Python编程感兴趣的读者●本书按照构建一个真实软件的顺序,通过一个贯穿全书的示例,解释其他教程中一般不会讲解的各种Python语言特性:从利用入口点让可重用的控制台脚本成为微服务,一直到高效使用asyncio整理来自多个数据源的数据。在此过程中,本书将介绍基于类型提示的linting、低开销的测试,以及其他自动执行的质量检查,以演示真实的开发过程。 ●通过阅读本书,你将了解以下内容: Python异步编程。插件架构。如何使用类型注解。Python相关测试技术。打包和依赖项管理。 ●具体而言: 第1章和第2章介绍开发环境和相关的工具; 第3~6章涵盖代码打包和依赖项分发、插件架构、接口、聚合服务器等实用内容; 第7章与第8章讨论线程和异步编程相关内容,以及一些高级主题; 第9~12章涉及可视化、调优、错误处理以及数据分析相关主题。 ●本书提供示例代码下载,读者可访问本书GitHub页面https://github.com/MatthewWilkes/advanced-python-development.git,签出Git存储库并按照本书内容一步步学习。 ●在介绍Python的一些强大特性时,人们常常编造一些示例,以孤立的示例解释各种特性。通过设计并构建真实的应用程序,从设计原型一直演示到开发出符合生产质量要求的应用程序,整个过程不只让你了解各种特性如何工作,还会让你看到它们如何作为更大的系统设计过程的组成部分集成起来。另外,本书还会提供一些有用的注意项,并推荐一些库,这些内容是Python大会问答环节的主要关注点。本书还会讨论现代Python开发的*佳实践和技术,帮助你编写清晰的、易于维护的代码。 ●本书针对的是已经能够使用Python编写简单程序但想要理解什么时候适合使用高级特性的开发人员,让他们能够自如地使用这些高级特性。想要提升自身Python编程水平以及已经具有丰富的经验但希望了解新版本Python特性的开发人员,都特别适合阅读本书。 【本书内容】 本书精心挑选了主题,旨在介绍Python编程的各个不同方面。Python社区作为一个整体没有充分理解或者利用这些方面,而且在指导新人时,不会把它们理所当然地教给新人。这并不是说这些特性一定很复杂,或者很难理解(当然有些特性确实如此),我相信,所有程序员都应该熟悉这些特性,即使他们并不会用到这些特性。 ●第1章将介绍使用Python编写简单程序的不同方式,还会介绍Jupyter记事本以及Python调试器的用法。虽然这两者都是相对来说为人熟知的工具,但很多人只熟悉其中的一个工具,而不是两者都能够熟练使用。本章还会介绍编写命令行接口的不同方式,以及一些有用的第三方库,它们支持简洁的命令行工具开发。 ●第2章将介绍帮助识别代码中的错误的工具,例如自动测试和linting工具。无论是编写大型代码库、很少需要编辑的代码库,还是要吸收第三方贡献的代码库,这些工具都能够让你更容易地写出让自己有信心的代码。这里介绍的工具都是我推荐的工具,但是,本章的关注点是理解它们的优缺点。你可能已经使用过其中的一个或多个工具,并且对于是否适合使用它们有自己的观点。本章将帮助你理解权衡点,从而做出明智的决定。 ●第3章将介绍Python中的代码打包和依赖项分发。对于编写可分发给其他人的应用程序,以及设计能够可靠工作的部署系统来说,这些都是重要的功能。我们将使用这些功能,把独立的脚本转换为可安装的应用程序。 ●第4章将介绍插件架构。这是一种强大的功能。经常可以看到学习插件架构的人使用它,这导致讲解Python的人们对于是否讲解插件架构持谨慎态度。对于我们的示例,插件架构十分适用。本章还将介绍一些用于命令行工具的高级技术,它们能够让调试基于插件的系统变得更加容易。 ●第5章将介绍Web接口和编写复杂函数的技术,如装饰器和闭包。这些技术在Python中已经是习语,但在其他许多编程语言中很难表达。本章还将介绍如何恰当地使用抽象基类。人们常常不建议使用抽象基类,因为学习抽象基类的人倾向于到处使用它们。在特定场景中,有节制地使用抽象基类是有优势的,当把抽象基类与第2章介绍的一些工具结合使用时更是如此。 ●第6章将用另一个重要组件扩展我们的示例,这个组件就是收集数据的聚合服务器。本章还将演示Python程序员会用到的一些*重要的第三方库,例如requests库。 ●第7章将介绍Python中的线程和异步编程。线程常常会导致难以探查的bug。异步代码能够用于类似的任务,但许多Python程序员还没有使用过这种习语,因为使用异步编程时,程序的行为与同步编程有很大区别。本章重点讨论在真实场景中如何使用并发来实现某个结果,而不只是演示一个简单的示例,或者演示异步编程的局限性。本章旨在得到能够在真实场景中使用的代码,并让你彻底理解权衡点,而不是进行独立的技术演示。 ●第8章将更加深入地介绍异步编程,讲解异步代码的测试以及一些第三方库。使用这些库能够编写在异步上下文中处理外部工具(如数据库)的代码。本章还将简要地介绍一些可以用来编写出色API的高级技术,例如上下文管理器和上下文变量,它们对于异步编程很有帮助。 ●第9章返回Jupyter,使用它的一些功能来实现数据可视化和方便的用户交互。我们将介绍如何在Jupyter记事本中把异步代码用于小部件,还将介绍迭代器的高级用法和实现复杂数据类型的多种方式。 ●第10章将详细介绍如何让Python代码运行得更快,如何使用不同类型的缓存,以及这些缓存适用的场景。本章还将介绍如何对应用程序中的各个Python函数进行基准测试,以及如何解读结果以找出速度缓慢的原因。 ●第11章将扩展本书前面介绍过的一些概念,以更加优雅地处理错误。我们将介绍如何修改插件架构,以便无缝地处理错误,同时保留完整的向后兼容性,还将深入介绍如何设计在遇到错误时就处理错误的过程。 ●第12章将使用Python的迭代器和协程来增强我们开发的仪表板,为它们添加一些功能,这些功能不是实现被动的数据收集,而是主动检查收集到的数据,从而允许我们构建包含多个步骤的分析流。
|