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

前言

Python非常流行,可用于开发多种应用程序。Python的设计使得用其创建小型程序相对容易,而为了创建更复杂的软件,我们需要掌握很多重要的编程和软件设计技能。

本书描述了如何使用 面向对象 的方法在Python中创建程序,介绍了面向对象编程的术语,并通过逐步深入的案例展示了如何进行软件设计和Python编程。书中还描述了如何利用继承和组合从单个元素开始构建软件,展示了如何使用Python的内置异常处理和数据结构,以及Python标准库中的元素。此外,书中还描述了很多设计模式,并提供了详细的示例。

本书讲解了如何编写自动化测试来确认我们的软件运行正常,还展示了如何使用Python提供的各种并发库,以帮助我们编写可以利用现代计算机中的多核和多处理器的软件。扩展的案例学习部分涵盖了一个简单的机器学习案例,展示了解决复杂问题的多种替代方案。

本书读者

本书针对的是Python面向对象编程的新手,假设读者具备基本的Python技能。对于有其他面向对象编程语言背景的读者,本书将展示Python的许多特性。

Python在数据科学和数据分析领域有很多应用,本书涉及相关的数学和统计概念,在这些领域具备一定的知识可以更好地理解书中概念及其应用。

本书内容

本书共分为4部分。第1章至第6章深入讲解了面向对象编程的核心原则和概念,以及它们在Python中的实现方式。第7章至第9章仔细探讨了Python的数据结构、内置类和方法等,以及如何从面向对象编程的角度进行分析和应用。第10章至第12章探讨了设计模式及其在Python中的实现。第13章和第14章涵盖了测试和并发两个重要主题。整本书以一个机器学习分类算法的实现案例贯穿始终,并不断探讨各种实现方式的优劣。

第1章“面向对象设计”,介绍了面向对象设计的核心概念。这为了解包括状态和行为、属性和方法,以及如何将对象分组到类中提供了路线图。本章还探讨了封装、组合和继承。案例学习部分引入了机器学习问题,是 k 最近邻(KNN)分类器的实现。

第2章“Python的对象”,展示了Python类定义的工作原理,包括类型注解(也称类型提示)、类定义、模块和包。本章还讨论了类定义和封装的实际考虑因素。案例学习部分开始实现KNN分类器的一些类。

第3章“当对象相似时”,讨论了类之间的关系,包括如何利用继承和多重继承。本章还探讨了类层级结构中的多态概念。案例学习部分研究了用于找到最近邻的距离算法的多种设计。

第4章“异常捕获”,深入探讨了Python的异常和异常处理,包括内置异常层级结构。本章还探讨了如何定义独特的异常来反映特定问题领域或应用程序。案例学习部分把异常应用于数据验证。

第5章“何时使用面向对象编程”,更深入地探讨了设计技术,包括如何通过Python的特性来实现属性。本章还探讨了管理对象集合的通用概念。案例学习部分应用了这些思想来扩展KNN分类器的实现。

第6章“抽象基类和运算符重载”,深入探讨了抽象的概念,以及Python如何支持抽象基类。本章还比较了“ 鸭子类型 ”和更正式的Protocol定义方法,包括重载Python内置运算符的技术。此外,还探讨了元类及其如何用于修改类构造方法。案例学习部分重定义了一些现有类,展示了如何谨慎地使用抽象来简化设计。

第7章“Python的数据结构”,介绍了Python内置的多种对象,包括元组、字典、列表和集合。本章还探讨了如何通过数据类和命名元组提供类的常见特性来简化设计。案例学习部分利用这些新技术修改了前面定义的一些类。

第8章“面向对象编程和函数式编程”,探讨了类以外的Python结构。虽然Python是面向对象的,但函数定义允许我们创建可调用对象,而无须使用复杂的类定义语法。本章还探讨了Python的上下文管理器结构和with语句。案例学习部分探讨了避免一些类复杂性的替代设计。

第9章“字符串、序列化和文件路径”,涵盖了对象如何被序列化为字符串,以及如何通过解析字符串来创建对象的内容。本章还探讨了几种文件格式,包括pickle、JSON和CSV。案例学习部分重新设计了加载和处理KNN分类器的样本数据。

第10章“迭代器模式”,描述了Python中无处不在的迭代概念。所有内置集合都是可迭代的,这种设计模式是Python工作方式的核心。本章还探讨了Python推导式和生成器函数。案例学习部分重新考虑了一些早期设计,使用生成器表达式和列表推导式来划分测试和训练样本。

第11章“通用设计模式”,探讨了一些常见的面向对象设计模式,包括装饰器模式、观察者模式、策略模式、命令模式、状态模式和单例模式。

第12章“高级设计模式”,探讨了一些更高级的面向对象设计模式,包括适配器模式、外观模式、享元模式、抽象工厂模式、组合模式和模板模式。

第13章“测试面向对象的程序”,展示了如何使用unittest和pytest为Python应用程序提供自动化单元测试套件。本章还探讨了一些更高级的测试技术,如使用Mock对象来隔离测试单元。案例学习部分展示了如何为第3章中涵盖的距离算法创建测试用例。

第14章“并发”,探讨了如何利用多核和多处理器计算机系统来快速进行计算,并编写了对外部事件做出响应的软件。本章还探讨了线程和多进程,以及Python的AsyncIO模块。案例学习部分展示了如何使用这些技术对KNN模型进行超参数调优。

如何充分利用本书

本书所有示例都通过Python 3.9.5进行了测试,并使用 mypy 0.812工具来确认类型提示是否一致。

对于一些示例,需要从网上下载数据,下载的数据量都比较小。

一些示例涉及的软件包不是Python内置标准库的一部分。在相关章节中,我们将注明这些软件包并提供安装说明。可以在Python包索引中找到所有这些额外的包,地址为链接56。

下载示例代码

可以在GitHub上下载本书的示例代码,地址为链接57。

本书还在链接58中提供了其他丰富的图书和视频清单,欢迎查看!

下载彩色图片

本书提供了一个PDF文件,其中包含了本书使用的一些截图、图表等的彩色图片,可以通过链接59下载。

使用约定

本书中使用了多种文本约定。

文本中的代码、数据库表名、文件夹名称、文件名、文件扩展名、路径名、虚拟网址、用户输入和Twitter句柄等可以使用类似这样的方式显示:“你可以通过在>>>提示符下导入antigravity模块来确认Python正在运行”。

本书对代码块的设置如下:

当我们希望引起你对代码块中特定部分的关注时,相关的行或项目会以粗体显示:

对任何命令行输入或输出都会这样书写:

粗体 :表示一个新术语、重要词汇,或会在屏幕上看到的词汇,比如在菜单或对话框中。例如,“从正式角度讲,一个对象是 数据 和相关 行为 的集合”。

警告或重要提示会这样显示。

技巧和窍门会这样显示。

联系我们

我们始终欢迎读者反馈。

一般反馈 :请发送电子邮件至feedback@packtpub.com,并在邮件主题中提及本书书名。如果你对本书的任何方面有疑问,请发送电子邮件至questions@packtpub.com。

勘误 :尽管我们已尽力确保内容的准确性,但错误仍可能发生。如果你发现本书中的错误,我们将非常感谢你向我们报告。请访问链接60,选择你的书名,点击勘误提交表格的链接,并输入详细信息。

盗版 :如果你在互联网上发现我们作品的任何非法副本,请向我们提供网址或网站名称。请联系copyright@packtpub.com,并附上材料链接。

如果你有兴趣成为一名作者 :如果你在某个领域具备专业知识,并有兴趣编写或贡献一本书,请访问链接61。

读者服务

微信扫码回复:48324

· 获取本书链接地址

· 加入Python技术群,与更多读者互动交流

· 获取【百场业界大咖直播合集】(持续更新),仅需1元 8m2MbkicLiFFBRQ1lC53JUYynJLRMRTBxnjl8ayMyQYq1XSfHU1wLD+iR0MxJhGE

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