互联网
类型
9.2
豆瓣评分
可以朗读
语音朗读
184千字
字数
2022-12-01
发行日期
展开全部
主编推荐语
本书教你如何熟练掌握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、科普以及教材、教辅等领域。