健壮的Python
Patrick Viafore
姚文杰, 周伟, 梁凌锐, 杨凌云 译
出版时间:2023年03月
页数:316
你的Python项目是否正在变得越来越庞大?随着代码的扩展,调试和维护工作变得更加艰难,你是否感到痛苦?Python是一种容易学习和使用的语言,但这也意味着系统可以迅速发展到无法理解的程度。值得庆幸的是,Python具有帮助开发者克服可维护性困境的功能。
在这本实用的书中,作者Patrick Viafore将告诉你如何最大限度地使用 Python的类型系统。你将看到用户定义的类型(如类和枚举),以及Python的类型提示系统。你还将学习如何使Python代码具有可扩展性,以及如何基于一个全面的测试策略构建安全网。利用这些知识和技术,你将编写更清晰、更易于维护的代码。
通过学习本书,你将:
● 了解为什么类型在现代开发生态系统中是必不可少的。
● 了解类、字典和枚举等类型选择是如何反映特定意图的。
● 在不加剧臃肿的情况下使Python代码在未来可扩展。
● 使用流行的Python工具来提高代码库的安全性和健壮性。
● 评估当前的代码以检测常见的可维护性问题。
● 通过linter和测试构建代码库的安全网。
  1. 第1章 健壮的Python简介
  2. 1.1 健壮性
  3. 1.2 你的意图是什么
  4. 1.3 Python中的意图示例
  5. 1.3.1 集合
  6. 1.3.2 迭代
  7. 1.3.3 最小惊讶原则
  8. 1.4 小结
  9. 第一部分 为代码添加类型注解
  10. 第2章 Python类型简介
  11. 2.1 类型中有什么
  12. 2.1.1 机器表达
  13. 2.1.2 语义表达
  14. 2.2 类型系统
  15. 2.2.1 强类型与弱类型
  16. 2.2.2 动态类型与静态类型
  17. 2.2.3 鸭子类型
  18. 2.3 小结
  19. 第3章 类型注解
  20. 3.1 什么是类型注解
  21. 3.2 类型注解的好处
  22. 3.2.1 自动补全
  23. 3.2.2 类型检查器
  24. 3.2.3 练习:找出bug
  25. 3.3 什么时候使用类型注解
  26. 3.4 小结
  27. 第4章 约束类型
  28. 4.1 Optional类型
  29. 4.2 Union类型
  30. 4.3 Literal类型
  31. 4.4 Annotated类型
  32. 4.5 NewType
  33. 4.6 Final类型
  34. 4.7 小结
  35. 第5章 集合类型
  36. 5.1 向集合添加类型注解
  37. 5.2 同构集合与异构集合
  38. 5.3 向字典添加类型
  39. 5.4 创建新的集合类型
  40. 5.4.1 泛型
  41. 5.4.2 修改现有的类型
  42. 5.4.3 像ABC一样简单
  43. 5.5 小结
  44. 第6章 自定义你的类型检查器
  45. 6.1 配置类型检查器
  46. 6.1.1 配置mypy
  47. 6.1.2 mypy报告
  48. 6.1.3 加速mypy
  49. 6.2 其他类型检查器
  50. 6.2.1 Pyre
  51. 6.2.2 Pyright
  52. 6.3 小结
  53. 第7章 采用类型检查的实践
  54. 7.1 权衡利弊
  55. 7.2 早日实现投入产出平衡
  56. 7.2.1 找到你的痛点
  57. 7.2.2 从战略上选择目标代码
  58. 7.2.3 依靠工具
  59. 7.3 小结
  60. 第二部分 定义你自己的类型
  61. 第8章 用户自定义类型:枚举
  62. 8.1 用户自定义类型
  63. 8.2 枚举
  64. 8.2.1 Enum
  65. 8.2.2 何时不使用
  66. 8.3 高级用法
  67. 8.3.1 自动分配值
  68. 8.3.2 Flag
  69. 8.3.3 整数转换
  70. 8.3.4 唯一性
  71. 8.4 小结
  72. 第9章 用户自定义类型:数据类
  73. 9.1 数据类实战
  74. 9.2 用法
  75. 9.2.1 字符串转换
  76. 9.2.2 相等性
  77. 9.2.3 关联性比较
  78. 9.2.4 不变性
  79. 9.3 与其他类型的比较
  80. 9.3.1 数据类与字典
  81. 9.3.2 数据类与TypedDict
  82. 9.3.3 数据类与命名元组
  83. 9.4 小结
  84. 第10章 用户自定义类型:类
  85. 10.1 类的剖析
  86. 10.2 不变量
  87. 10.2.1 避免损坏的不变量
  88. 10.2.2 为什么不变量是有益的
  89. 10.2.3 沟通不变量
  90. 10.2.4 消费你的类
  91. 10.2.5 维护者怎么办
  92. 10.3 封装和维护不变量
  93. 10.3.1 封装
  94. 10.3.2 保护数据访问
  95. 10.3.3 操作
  96. 10.4 小结
  97. 第11章 定义你的接口
  98. 11.1 自然接口设计
  99. 11.2 自然的交互
  100. 11.2.1 自然接口实践
  101. 11.2.2 魔法方法
  102. 11.2.3 上下文管理器
  103. 11.3 小结
  104. 第12章 子类型
  105. 12.1 继承
  106. 12.2 可替代性
  107. 12.3 设计方面的考虑
  108. 12.4 小结
  109. 第13章 协议
  110. 13.1 类型系统之间的张力
  111. 13.1.1 留空类型或使用Any类型
  112. 13.1.2 使用Union
  113. 13.1.3 使用继承
  114. 13.1.4 使用mixin
  115. 13.2 协议
  116. 13.3 高级用法
  117. 13.3.1 复合协议
  118. 13.3.2 运行时可检查协议
  119. 13.3.3 满足协议的模块
  120. 13.4 小结
  121. 第14章 使用pydantic进行运行时检查
  122. 14.1 动态配置
  123. 14.2 pydantic
  124. 14.2.1 验证器
  125. 14.2.2 验证与解析
  126. 14.3 小结
  127. 第三部分 可扩展的Python
  128. 第15章 可扩展性
  129. 15.1 可扩展性是什么
  130. 15.2 开闭原则
  131. 15.2.1 检测OCP侵犯
  132. 15.2.2 缺点
  133. 15.3 小结
  134. 第16章 依赖关系
  135. 16.1 关系
  136. 16.2 依赖关系的类型
  137. 16.2.1 物理依赖关系
  138. 16.2.2 逻辑依赖关系
  139. 16.2.3 时间依赖关系
  140. 16.3 可视化你的依赖关系
  141. 16.3.1 可视化包
  142. 16.3.2 可视化导入
  143. 16.3.3 可视化函数调用
  144. 16.3.4 解释依赖关系图
  145. 16.4 小结
  146. 第17章 可组合性
  147. 17.1 可组合性介绍
  148. 17.2 策略与机制
  149. 17.3 较小规模的组合
  150. 17.3.1 组合函数
  151. 17.3.2 组合算法
  152. 17.4 小结
  153. 第18章 事件驱动的架构
  154. 18.1 工作原理
  155. 18.2 简单的事件
  156. 18.2.1 使用消息代理
  157. 18.2.2 观察者模式
  158. 18.3 事件流
  159. 18.4 小结
  160. 第19章 可插入的Python
  161. 19.1 模板方法模式
  162. 19.2 策略模式
  163. 19.3 插件式架构
  164. 19.4 小结
  165. 第四部分 构建安全网
  166. 第20章 静态分析
  167. 20.1 lint检测
  168. 20.1.1 编写自己的Pylint插件
  169. 20.1.2 分解插件
  170. 20.2 其他静态分析器
  171. 20.2.1 复杂度检查器
  172. 20.2.2 安全分析
  173. 20.3 小结
  174. 第21章 测试策略
  175. 21.1 定义测试策略
  176. 21.2 降低测试成本
  177. 21.3 小结
  178. 第22章 验收测试
  179. 22.1 行为驱动开发
  180. 22.1.1 Gherkin语言
  181. 22.1.2 可执行规范
  182. 22.2 额外的behave特性
  183. 22.2.1 参数化步骤
  184. 22.2.2 表格驱动的需求
  185. 22.2.3 步骤匹配
  186. 22.2.4 定制测试生命周期
  187. 22.2.5 使用标记选择性地运行测试
  188. 22.2.6 报告生成
  189. 22.3 小结
  190. 第23章 基于属性的测试
  191. 23.1 用Hypothesis开展基于属性的测试
  192. 23.1.1 Hypothesis的魔力
  193. 23.1.2 与传统测试的对比
  194. 23.2 充分利用Hypothesis
  195. 23.2.1 Hypothesis策略
  196. 23.2.2 生成算法
  197. 23.3 小结
  198. 第24章 突变测试
  199. 24.1 什么是突变测试
  200. 24.2 用mutmut进行突变测试
  201. 24.2.1 修复突变体
  202. 24.2.2 突变测试报告
  203. 24.3 采用突变测试
  204. 24.4 小结
书名:健壮的Python
作者:Patrick Viafore
译者:姚文杰, 周伟, 梁凌锐, 杨凌云 译
国内出版社:机械工业出版社
出版时间:2023年03月
页数:316
书号:978-7-111-72144-4
原版书书名:Robust Python
原版书出版商:O'Reilly Media
Patrick Viafore
 
Patrick Viafore在关键任务软件领域有超过14年的工作经验,专业方向涉及雷电检测、电信和操作系统。他通过开发管道和工具,将Ubuntu镜像部署到公有云供应商,并通过Kudzera有限责任公司进行软件咨询和项目承包(他是这家公司的负责人)。他的目标是使计算机科学以及软件工程主题对开发者社区来说更加容易理解。
 
 
购买选项
定价:139.00元
书号:978-7-111-72144-4
出版社:机械工业出版社