编辑推荐
本书教你如何熟练掌握Python编程技能。
内容简介
你的Python项目是否正在变得越来越庞大?随着代码的扩展,调试和维护工作变得更加艰难,你是否感到痛苦?Python是一种容易学习和使用的语言,但这也意味着系统可以迅速发展到无法理解的程度。值得庆幸的是,Python具有帮助开发者克服可维护性困境的功能。
在这本实用的书中,作者Patrick Viafore将告诉你如何限度地使用Python的类型系统。你将看到用户定义的类型(如类和枚举),以及Python的类型提示系统。你还将学习如何使Python代码具有可扩展性,以及如何基于一个全面的测试策略构建安全网。利用这些知识和技术,你将编写更清晰、更易于维护的代码。
作者简介
作者帕特里克·维亚福尔(Patrick Viafore),在关键任务软件领域有超过14年的工作经验,专业方向涉及雷电检测、电信和操作系统。他通过开发管道和工具,将Ubuntu镜像部署到公有云供应商,并通过Kudzera有限责任公司进行软件咨询和项目承包(他是这家公司的负责人)。他的目标是使计算机科学以及软件工程主题对开发者社区来说更加容易理解。
章节目录
版权信息
O'Reilly Media,Inc.介绍
本书赞誉
推荐序
译者序
前言
第1章 健壮的Python简介
1.1 健壮性
1.2 你的意图是什么
1.3 Python中的意图示例
1.3.1 集合
1.3.2 迭代
1.3.3 最小惊讶原则
1.4 小结
第一部分 为代码添加类型注解
第2章 Python类型简介
2.1 类型中有什么
2.1.1 机器表达
2.1.2 语义表达
2.2 类型系统
2.2.1 强类型与弱类型
2.2.2 动态类型与静态类型
2.2.3 鸭子类型
2.3 小结
第3章 类型注解
3.1 什么是类型注解
3.2 类型注解的好处
3.2.1 自动补全
3.2.2 类型检查器
3.2.3 练习:找出bug
3.3 什么时候使用类型注解
3.4 小结
第4章 约束类型
4.1 Optional类型
4.2 Union类型
4.3 Literal类型
4.4 Annotated类型
4.5 NewType
4.6 Final类型
4.7 小结
第5章 集合类型
5.1 向集合添加类型注解
5.2 同构集合与异构集合
5.3 向字典添加类型
5.4 创建新的集合类型
5.4.1 泛型
5.4.2 修改现有的类型
5.4.3 像ABC一样简单
5.5 小结
第6章 自定义你的类型检查器
6.1 配置类型检查器
6.1.1 配置mypy
6.1.2 mypy报告
6.1.3 加速mypy
6.2 其他类型检查器
6.2.1 Pyre
6.2.2 Pyright
6.3 小结
第7章 采用类型检查的实践
7.1 权衡利弊
7.2 早日实现投入产出平衡
7.2.1 找到你的痛点
7.2.2 从战略上选择目标代码
7.2.3 依靠工具
7.3 小结
第二部分 定义你自己的类型
第8章 用户自定义类型:枚举
8.1 用户自定义类型
8.2 枚举
8.2.1 Enum
8.2.2 何时不使用
8.3 高级用法
8.3.1 自动分配值
8.3.2 Flag
8.3.3 整数转换
8.3.4 唯一性
8.4 小结
第9章 用户自定义类型:数据类
9.1 数据类实战
9.2 用法
9.2.1字符串转换
9.2.2 相等性
9.2.3 关联性比较
9.2.4 不变性
9.3 与其他类型的比较
9.3.1 数据类与字典
9.3.2 数据类与TypedDict
9.3.3 数据类与命名元组
9.4 小结
第10章 用户自定义类型:类
10.1 类的剖析
10.2 不变量
10.2.1 避免损坏的不变量
10.2.2 为什么不变量是有益的
10.2.3 沟通不变量
10.2.4 消费你的类
10.2.5 维护者怎么办
10.3 封装和维护不变量
10.3.1 封装
10.3.2 保护数据访问
10.3.3 操作
10.4 小结
第11章 定义你的接口
11.1 自然接口设计
11.2 自然的交互
11.2.1 自然接口实践
11.2.2 魔法方法
11.2.3 上下文管理器
11.3 小结
第12章 子类型
12.1 继承
12.2 可替代性
12.3 设计方面的考虑
12.4 小结
第13章 协议
13.1 类型系统之间的张力
13.1.1 留空类型或使用Any类型
13.1.2 使用Union
13.1.3 使用继承
13.1.4 使用mixin
13.2 协议
13.3 高级用法
13.3.1 复合协议
13.3.2 运行时可检查协议
13.3.3 满足协议的模块
13.4 小结
第14章 使用pydantic进行运行时检查
14.1 动态配置
14.2 pydantic
14.2.1 验证器
14.2.2 验证与解析
14.3 小结
第三部分 可扩展的Python
第15章 可扩展性
15.1 可扩展性是什么
15.2开闭原则
15.2.1 检测OCP侵犯
15.2.2 缺点
15.3 小结
第16章 依赖关系
16.1 关系
16.2 依赖关系的类型
16.2.1 物理依赖关系
16.2.2 逻辑依赖关系
16.2.3 时间依赖关系
16.3 可视化你的依赖关系
16.3.1 可视化包
16.3.2 可视化导入
16.3.3 可视化函数调用
16.3.4 解释依赖关系图
16.4 小结
第17章 可组合性
17.1 可组合性介绍
17.2 策略与机制
17.3 较小规模的组合
17.3.1 组合函数
17.3.2 组合算法
17.4 小结
第18章 事件驱动的架构
18.1 工作原理
18.2 简单的事件
18.2.1 使用消息代理
18.2.2 观察者模式
18.3 事件流
18.4 小结
第19章 可插入的Python
19.1 模板方法模式
19.2 策略模式
19.3 插件式架构
19.4 小结
第四部分 构建安全网
第20章 静态分析
20.1 lint检测
20.1.1 编写自己的Pylint插件
20.1.2 分解插件
20.2 其他静态分析器
20.2.1 复杂度检查器
20.2.2 安全分析
20.3 小结
第21章 测试策略
21.1 定义测试策略
21.2 降低测试成本
21.3 小结
第22章 验收测试
22.1 行为驱动开发
22.1.1 Gherkin语言
22.1.2 可执行规范
22.2 额外的behave特性
22.2.1 参数化步骤
22.2.2 表格驱动的需求
22.2.3 步骤匹配
22.2.4 定制测试生命周期
22.2.5 使用标记选择性地运行测试
22.2.6 报告生成
22.3 小结
第23章 基于属性的测试
23.1 用Hypothesis开展基于属性的测试
23.1.1 Hypothesis的魔力
23.1.2 与传统测试的对比
23.2 充分利用Hypothesis
23.2.1 Hypothesis策略
23.2.2 生成算法
23.3 小结
第24章 突变测试
24.1什么是突变测试
24.2 用mutmut进行突变测试
24.2.1 修复突变体
24.2.2 突变测试报告
24.3 采用突变测试
24.4 小结
关于作者
关于封面
健壮的Python是2022年由机械工业出版社出版,作者[美] 帕特里克·维亚福尔。
得书感谢您对《健壮的Python》关注和支持,如本书内容有不良信息或侵权等情形的,请联系本网站。