展开全部

主编推荐语

本书教你如何熟练掌握Python编程技能。

内容简介

你的Python项目是否正在变得越来越庞大?随着代码的扩展,调试和维护工作变得更加艰难,你是否感到痛苦?Python是一种容易学习和使用的语言,但这也意味着系统可以迅速发展到无法理解的程度。值得庆幸的是,Python具有帮助开发者克服可维护性困境的功能。

在这本实用的书中,作者Patrick Viafore将告诉你如何限度地使用Python的类型系统。你将看到用户定义的类型(如类和枚举),以及Python的类型提示系统。你还将学习如何使Python代码具有可扩展性,以及如何基于一个全面的测试策略构建安全网。利用这些知识和技术,你将编写更清晰、更易于维护的代码。

目录

  • 版权信息
  • 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 小结
  • 关于作者
  • 关于封面
展开全部

评分及书评

尚无评分
目前还没人评分

出版方

机械工业出版社

机械工业出版社是全国优秀出版社,自1952年成立以来,坚持为科技、为教育服务,以向行业、向学校提供优质、权威的精神产品为宗旨,以“服务社会和人民群众需求,传播社会主义先进文化”为己任,产业结构不断完善,已由传统的图书出版向着图书、期刊、电子出版物、音像制品、电子商务一体化延伸,现已发展为多领域、多学科的大型综合性出版社,涉及机械、电工电子、汽车、计算机、经济管理、建筑、ELT、科普以及教材、教辅等领域。