Python代码整洁之道

Python代码整洁之道
分享
扫描下方二维码分享到微信
打开微信,点击右上角”+“,
使用”扫一扫“即可将网页分享到朋友圈。
作者: [美] (Dane Hillard)
2021-09
ISBN: 9787302588221
定价: 79.80
装帧: 平装
开本: 16开
纸张: 胶版纸
6人买过
  • 主要内容 
    组织大型Python项目 
    实现合适的抽象级别 
    编写整洁并可重用的代码 
    继承和组合 
    测试和性能的注意事项 

    Dane Hillard是一位软件工程师、Web开发人员和Python国际会议演讲者,他感兴趣的领域包括教育、生物技术和开源。Dane编写专业的Python软件已有10年。 
    Dane在密歇根大学获得计算机工程学士学位,辅修数学。作为一名软件工程师,Dane曾在SAIC(现为Leidos)从事情报研究和开发工作,在Compendia Bioscience(现已并入赛默飞世尔科技公司)从事个性化癌症基因组学研究。Dane目前为ITHAKA的首席Web应用程序开发人员,他主要专注于Python、Django的Web开发,以及用于学术研究的前端技术。 

    第Ⅰ部分 为什么学习Python 

     
    第1 章 Python 总览      3 

     
    1.1 Python 是一种企业语言     5 

     
    1.1.1 时代在改变    5 

     
    1.1.2 我喜欢Python 的原因   5 

     
    1.2 Python 是一种教学语言     6 

     
    1.3 设计是一个过程   6 

     
    1.3.1 用户体验      8 

     
    1.3.2 你以前接触过的情况   9 

     
    1.4 设计更好的软件   10 

     
    1.4.1 软件设计注意事项  10 

     
    1.4.2 “有机”增长的软件  11 

     
    1.5 何时投资设计    13 

     
    1.6 新的开始  14 

     
    1.7 设计是平等的    15 

     
    1.8 如何使用本书    18 

     
    1.9 本章小结  19 

     
    第Ⅱ部分 设计基础 

     
    第2 章 关注点分离     23 

     
    2.1 命名空间  24 

     
    2.1.1 命名空间和导入语句  25 

     
    2.1.2 导入的多重面纱  27 

     
    2.1.3 命名空间可避免冲突  29 

     
    2.2 Python 中的分离层级     31 

     
    2.2.1 函数  31 

     
    2.2.2 类    39 

     
    2.2.3 模块  46 

     
    2.2.4 包    47 

     
    2.3 本章小结  49 

     
    第3 章 抽象和封装      51 

     
    3.1 什么是抽象      51 

     
    3.1.1 “黑匣子”     52 

     
    3.1.2 抽象就像洋葱  53 

     
    3.1.3 抽象即简化   56 

     
    3.1.4 分解实现抽象  57 

     
    3.2 封装     58 

     
    3.2.1 Python 中的封装构造  58 

     
    3.2.2 Python 中的私有变量  60 

     
    3.3 试一试   60 

     
    3.4 编程风格也是一种抽象     64 

     
    3.4.1 过程式编程   64 

     
    3.4.2 函数式编程   64 

     
    3.4.3 声明式编程   66 

     
    3.5 类型、继承和多态性   68 

     
    3.6 了解错误的抽象   70 

     
    3.6.1 方枘圆凿     71 

     
    3.6.2 智者更智     71 

     
    3.7 本章小结  72 

     
    第4 章 设计高性能的代码      73 

     
    4.1 穿越时空  74 

     
    4.1.1 复杂度有点复杂  74 

     
    4.1.2 时间复杂度   75 

     
    4.1.3 空间复杂度   79 

     
    4.2 性能与数据类型   81 

     
    4.2.1 常量时间的数据类型  81 

     
    4.2.2 线性时间的数据类型  82 

     
    4.2.3 在数据类型上操作的空间复杂度 82 

     
    4.3 让它能够运行,正确运行,快速运行   86 

     
    4.3.1 让它运行     86 

     
    4.3.2 让它正确运行  87 

     
    4.3.3 让它快速运行  90 

     
    4.4 工具     91 

     
    4.4.1 timeit 模块    92 

     
    4.4.2 CPU 性能分析  93 

     
    4.5 试一试   95 

     
    4.6 本章小结  96 

     
    第5 章 测试软件  97 

     
    5.1 什么是软件测试     98 

     
    5.1.1 软件是否按照要求运行      98 

     
    5.1.2 功能测试剖析  99 

     
    5.2 功能测试方法   100 

     
    5.2.1 手动测试    100 

     
    5.2.2 自动化测试  101 

     
    5.2.3 验收测试    101 

     
    5.2.4 单元测试    103 

     
    5.2.5 集成测试    105 

     
    5.2.6 测试金字塔  105 

     
    5.2.7 回归测试    106 

     
    5.3 事实陈述 107 

     
    5.4 使用unittest 进行单元测试 108 

     
    5.4.1 使用unittest 测试组织  108 

     
    5.4.2 使用unittest 运行测试  109 

     
    5.4.3 使用unittest 编写第一个测试  109 

     
    5.4.4 使用unittest 编写第一个集成测试  113 

     
    5.4.5 测试替身    116 

     
    5.4.6 试一试     118 

     
    5.4.7 编写有趣的测试  121 

     
    5.5 使用pytest测试    121 

     
    5.5.1 使用pytest 测试组织  122 

     
    5.5.2 把unittest测试转换为pytest  123 

     
    5.6 超越功能测试   124 

     
    5.6.1 性能测试    124 

     
    5.6.2 负载测试    125 

     
    5.7 测试驱动开发:入门    126 

     
    5.7.1 测试驱动开发是一种心态    126 

     
    5.7.2 测试驱动开发是一种哲学    126 

     
    5.8 本章小结 127 

     
    第Ⅲ部分 明确大型系统 

     
    第6 章 实践中的关注点分离    131 

     
    6.1 命令行书签应用程序    132 

     
    6.2 踏上Bark 之旅   133 

     
    6.3 初始代码结构   134 

     
    6.3.1 持久层      136 

     
    6.3.2 业务逻辑层   148 

     
    6.3.3 表示层      153 

     
    6.4 本章小结 162 

     
    第7 章 可扩展性和灵活性   163 

     
    7.1 什么是可扩展的代码    163 

     
    7.1.1 添加新行为  164 

     
    7.1.2 修改现有行为  167 

     
    7.1.3 松耦合     168 

     
    7.2 解决僵化性     170 

     
    7.2.1 放手:控制反转  171 

     
    7.2.2 细节决定成败:依赖接口    175 

     
    7.2.3 抵抗熵:稳健性原则  176 

     
    7.3 扩展练习 177 

     
    7.4 本章小结 182 

     
    第8 章 有关继承的规则(及例外)   183 

     
    8.1 过去编程中的继承    183 

     
    8.1.1 银弹  184 

     
    8.1.2 继承的挑战  184 

     
    8.2 当前编程中的继承    186 

     
    8.2.1 继承到底是为了什么  186 

     
    8.2.2 可替代性    188 

     
    8.2.3 继承的理想用例  189 

     
    8.3 Python 中的继承    192 

     
    8.3.1 类型检查    192 

     
    8.3.2 超类访问    193 

     
    8.3.3 多重继承和方法解析顺序    194 

     
    8.3.4 抽象基类    198 

     
    8.4 Bark 中的继承和组合    201 

     
    8.4.1 重构以使用抽象基类  201 

     
    8.4.2 对继承工作进行最后的检查   203 

     
    8.5 本章小结 204 

     
    第9 章 保持轻量级    205 

     
    9.1 类/函数/模块应该有多大  206 

     
    9.1.1 物理度量    206 

     
    9.1.2 单一职责    207 

     
    9.1.3 代码的复杂度      207 

     
    9.2 分解复杂度     212 

     
    9.2.1 提取配置   212 

     
    9.2.2 提取函数    215 

     
    9.3 分解类  218 

     
    9.3.1 复杂度初始化  218 

     
    9.3.2 提取类和转发调用  221 

     
    9.4 本章小结 226 

     
    第10 章 实现松耦合    227 

     
    10.1 定义耦合      227 

     
    10.1.1 结缔组织  228 

     
    10.1.2 紧耦合    229 

     
    10.1.3 松耦合    232 

     
    10.2 识别耦合      235 

     
    10.2.1 依恋情结  235 

     
    10.2.2 散弹式修改     237 

     
    10.2.3 抽象泄漏  237 

     
    10.3 Bark 中的耦合  238 

     
    10.4 寻址耦合      241 

     
    10.4.1 用户消息传递     241 

     
    10.4.2 书签持久性· 245 

     
    10.4.3 试一试    246 

     
    10.5 本章小结      250 

     
    第Ⅳ部分 下一步学习什么 

     
    第11 章 全力以赴      253 

     
    11.1 现在怎么办    253 

     
    11.1.1 制订计划   254 

     
    11.1.2 执行计划   256 

     
    11.1.3 跟踪进度   257 

     
    11.2 设计模式      259 

     
    11.2.1 Python 设计模式的起伏    261 

     
    11.2.2 需要了解的术语      261 

     
    11.3 分布式系统    262 

     
    11.3.1 分布式系统中的故障模式   263 

     
    11.3.2 寻址应用程序状态      263 

     
    11.3.3 入门术语   264 

     
    11.4 进行Python深潜   264 

     
    11.4.1 Python 代码样式     264 

     
    11.4.2 语言特征是模式      265 

     
    11.4.3 入门术语   266 

     
    11.5 你已经了解的内容   266 

     
    11.5.1 开发人员的心得体会   267 

     
    11.5.2 即将完结   268 

     
    11.6 本章小结      269 

     
    附录A 安装Python     271 

     
    A.1 我应该使用什么版本的Python    271 

     
    A.2 “系统”Python   272 

     
    A.3 安装其他版本的Python  272 

     
    A.3.1 下载官方Python     272 

     
    A.3.2 使用Anaconda下载      274 

     
    A.4 验证安装      274 

  • 内容简介:
    主要内容 
    组织大型Python项目 
    实现合适的抽象级别 
    编写整洁并可重用的代码 
    继承和组合 
    测试和性能的注意事项 

  • 作者简介:
    Dane Hillard是一位软件工程师、Web开发人员和Python国际会议演讲者,他感兴趣的领域包括教育、生物技术和开源。Dane编写专业的Python软件已有10年。 
    Dane在密歇根大学获得计算机工程学士学位,辅修数学。作为一名软件工程师,Dane曾在SAIC(现为Leidos)从事情报研究和开发工作,在Compendia Bioscience(现已并入赛默飞世尔科技公司)从事个性化癌症基因组学研究。Dane目前为ITHAKA的首席Web应用程序开发人员,他主要专注于Python、Django的Web开发,以及用于学术研究的前端技术。 

  • 目录:
    第Ⅰ部分 为什么学习Python 

     
    第1 章 Python 总览      3 

     
    1.1 Python 是一种企业语言     5 

     
    1.1.1 时代在改变    5 

     
    1.1.2 我喜欢Python 的原因   5 

     
    1.2 Python 是一种教学语言     6 

     
    1.3 设计是一个过程   6 

     
    1.3.1 用户体验      8 

     
    1.3.2 你以前接触过的情况   9 

     
    1.4 设计更好的软件   10 

     
    1.4.1 软件设计注意事项  10 

     
    1.4.2 “有机”增长的软件  11 

     
    1.5 何时投资设计    13 

     
    1.6 新的开始  14 

     
    1.7 设计是平等的    15 

     
    1.8 如何使用本书    18 

     
    1.9 本章小结  19 

     
    第Ⅱ部分 设计基础 

     
    第2 章 关注点分离     23 

     
    2.1 命名空间  24 

     
    2.1.1 命名空间和导入语句  25 

     
    2.1.2 导入的多重面纱  27 

     
    2.1.3 命名空间可避免冲突  29 

     
    2.2 Python 中的分离层级     31 

     
    2.2.1 函数  31 

     
    2.2.2 类    39 

     
    2.2.3 模块  46 

     
    2.2.4 包    47 

     
    2.3 本章小结  49 

     
    第3 章 抽象和封装      51 

     
    3.1 什么是抽象      51 

     
    3.1.1 “黑匣子”     52 

     
    3.1.2 抽象就像洋葱  53 

     
    3.1.3 抽象即简化   56 

     
    3.1.4 分解实现抽象  57 

     
    3.2 封装     58 

     
    3.2.1 Python 中的封装构造  58 

     
    3.2.2 Python 中的私有变量  60 

     
    3.3 试一试   60 

     
    3.4 编程风格也是一种抽象     64 

     
    3.4.1 过程式编程   64 

     
    3.4.2 函数式编程   64 

     
    3.4.3 声明式编程   66 

     
    3.5 类型、继承和多态性   68 

     
    3.6 了解错误的抽象   70 

     
    3.6.1 方枘圆凿     71 

     
    3.6.2 智者更智     71 

     
    3.7 本章小结  72 

     
    第4 章 设计高性能的代码      73 

     
    4.1 穿越时空  74 

     
    4.1.1 复杂度有点复杂  74 

     
    4.1.2 时间复杂度   75 

     
    4.1.3 空间复杂度   79 

     
    4.2 性能与数据类型   81 

     
    4.2.1 常量时间的数据类型  81 

     
    4.2.2 线性时间的数据类型  82 

     
    4.2.3 在数据类型上操作的空间复杂度 82 

     
    4.3 让它能够运行,正确运行,快速运行   86 

     
    4.3.1 让它运行     86 

     
    4.3.2 让它正确运行  87 

     
    4.3.3 让它快速运行  90 

     
    4.4 工具     91 

     
    4.4.1 timeit 模块    92 

     
    4.4.2 CPU 性能分析  93 

     
    4.5 试一试   95 

     
    4.6 本章小结  96 

     
    第5 章 测试软件  97 

     
    5.1 什么是软件测试     98 

     
    5.1.1 软件是否按照要求运行      98 

     
    5.1.2 功能测试剖析  99 

     
    5.2 功能测试方法   100 

     
    5.2.1 手动测试    100 

     
    5.2.2 自动化测试  101 

     
    5.2.3 验收测试    101 

     
    5.2.4 单元测试    103 

     
    5.2.5 集成测试    105 

     
    5.2.6 测试金字塔  105 

     
    5.2.7 回归测试    106 

     
    5.3 事实陈述 107 

     
    5.4 使用unittest 进行单元测试 108 

     
    5.4.1 使用unittest 测试组织  108 

     
    5.4.2 使用unittest 运行测试  109 

     
    5.4.3 使用unittest 编写第一个测试  109 

     
    5.4.4 使用unittest 编写第一个集成测试  113 

     
    5.4.5 测试替身    116 

     
    5.4.6 试一试     118 

     
    5.4.7 编写有趣的测试  121 

     
    5.5 使用pytest测试    121 

     
    5.5.1 使用pytest 测试组织  122 

     
    5.5.2 把unittest测试转换为pytest  123 

     
    5.6 超越功能测试   124 

     
    5.6.1 性能测试    124 

     
    5.6.2 负载测试    125 

     
    5.7 测试驱动开发:入门    126 

     
    5.7.1 测试驱动开发是一种心态    126 

     
    5.7.2 测试驱动开发是一种哲学    126 

     
    5.8 本章小结 127 

     
    第Ⅲ部分 明确大型系统 

     
    第6 章 实践中的关注点分离    131 

     
    6.1 命令行书签应用程序    132 

     
    6.2 踏上Bark 之旅   133 

     
    6.3 初始代码结构   134 

     
    6.3.1 持久层      136 

     
    6.3.2 业务逻辑层   148 

     
    6.3.3 表示层      153 

     
    6.4 本章小结 162 

     
    第7 章 可扩展性和灵活性   163 

     
    7.1 什么是可扩展的代码    163 

     
    7.1.1 添加新行为  164 

     
    7.1.2 修改现有行为  167 

     
    7.1.3 松耦合     168 

     
    7.2 解决僵化性     170 

     
    7.2.1 放手:控制反转  171 

     
    7.2.2 细节决定成败:依赖接口    175 

     
    7.2.3 抵抗熵:稳健性原则  176 

     
    7.3 扩展练习 177 

     
    7.4 本章小结 182 

     
    第8 章 有关继承的规则(及例外)   183 

     
    8.1 过去编程中的继承    183 

     
    8.1.1 银弹  184 

     
    8.1.2 继承的挑战  184 

     
    8.2 当前编程中的继承    186 

     
    8.2.1 继承到底是为了什么  186 

     
    8.2.2 可替代性    188 

     
    8.2.3 继承的理想用例  189 

     
    8.3 Python 中的继承    192 

     
    8.3.1 类型检查    192 

     
    8.3.2 超类访问    193 

     
    8.3.3 多重继承和方法解析顺序    194 

     
    8.3.4 抽象基类    198 

     
    8.4 Bark 中的继承和组合    201 

     
    8.4.1 重构以使用抽象基类  201 

     
    8.4.2 对继承工作进行最后的检查   203 

     
    8.5 本章小结 204 

     
    第9 章 保持轻量级    205 

     
    9.1 类/函数/模块应该有多大  206 

     
    9.1.1 物理度量    206 

     
    9.1.2 单一职责    207 

     
    9.1.3 代码的复杂度      207 

     
    9.2 分解复杂度     212 

     
    9.2.1 提取配置   212 

     
    9.2.2 提取函数    215 

     
    9.3 分解类  218 

     
    9.3.1 复杂度初始化  218 

     
    9.3.2 提取类和转发调用  221 

     
    9.4 本章小结 226 

     
    第10 章 实现松耦合    227 

     
    10.1 定义耦合      227 

     
    10.1.1 结缔组织  228 

     
    10.1.2 紧耦合    229 

     
    10.1.3 松耦合    232 

     
    10.2 识别耦合      235 

     
    10.2.1 依恋情结  235 

     
    10.2.2 散弹式修改     237 

     
    10.2.3 抽象泄漏  237 

     
    10.3 Bark 中的耦合  238 

     
    10.4 寻址耦合      241 

     
    10.4.1 用户消息传递     241 

     
    10.4.2 书签持久性· 245 

     
    10.4.3 试一试    246 

     
    10.5 本章小结      250 

     
    第Ⅳ部分 下一步学习什么 

     
    第11 章 全力以赴      253 

     
    11.1 现在怎么办    253 

     
    11.1.1 制订计划   254 

     
    11.1.2 执行计划   256 

     
    11.1.3 跟踪进度   257 

     
    11.2 设计模式      259 

     
    11.2.1 Python 设计模式的起伏    261 

     
    11.2.2 需要了解的术语      261 

     
    11.3 分布式系统    262 

     
    11.3.1 分布式系统中的故障模式   263 

     
    11.3.2 寻址应用程序状态      263 

     
    11.3.3 入门术语   264 

     
    11.4 进行Python深潜   264 

     
    11.4.1 Python 代码样式     264 

     
    11.4.2 语言特征是模式      265 

     
    11.4.3 入门术语   266 

     
    11.5 你已经了解的内容   266 

     
    11.5.1 开发人员的心得体会   267 

     
    11.5.2 即将完结   268 

     
    11.6 本章小结      269 

     
    附录A 安装Python     271 

     
    A.1 我应该使用什么版本的Python    271 

     
    A.2 “系统”Python   272 

     
    A.3 安装其他版本的Python  272 

     
    A.3.1 下载官方Python     272 

     
    A.3.2 使用Anaconda下载      274 

     
    A.4 验证安装      274 

查看详情
12
相关图书 / 更多
Python代码整洁之道
Python和PySpark数据分析
(加)乔纳森·里乌
Python代码整洁之道
Python机器学习入门与实践 从深度学习到生成对抗网络GAN 深入浅出GAN生成对抗网络 实战gan TensorFlow与Keras 人工智能技术书籍
(日)大关真之
Python代码整洁之道
Python语言程序设计
王刚
Python代码整洁之道
Python代码编程 学科项目式编程(六年级)
冯建刚
Python代码整洁之道
Python机器学习 : 核心技术与开发实战 周志华西瓜书机器学习实战伴侣书
[美]普拉提克·乔希 著;李现伟 译者;颉腾文化 出品;阿尔伯托·阿尔塔桑切斯(美);曾小健
Python代码整洁之道
Python语言程序设计(微课版)
宁爱军 何志永
Python代码整洁之道
Python数据分析从入门到精通(第2版)
明日科技
Python代码整洁之道
Python数据分析与挖掘
齐福利
Python代码整洁之道
Python基础与应用(互联网+教育新形态一体化系列教材)
李喆时、谢家立、赵丽 编
Python代码整洁之道
Python数据分析与可视化项目实战
王振丽
Python代码整洁之道
Python爬虫从菜鸟到高手
李宁
Python代码整洁之道
Python程序设计基础教程
\"孙海龙 王济军\
您可能感兴趣 / 更多
Python代码整洁之道
孩子,把你的手给我1:怎么说孩子才爱听,怎么教孩子才肯学?帮助每一位3-12岁孩子的父母结束与孩子的所有冲突!
[美]海姆·G.吉诺特
Python代码整洁之道
怎样做成大事
[美]丹·加德纳(Dan Gardner) 著;贾拥民 译;湛庐文化 出品;[丹麦]傅以斌(Bent Flyvbjerg)
Python代码整洁之道
1200年希腊罗马神话
[美]伊迪丝·汉密尔顿
Python代码整洁之道
爱情心理学(新编本)
[美]罗伯特·J. 斯腾伯格 (美)凯琳·斯腾伯格 倪爱萍 译
Python代码整洁之道
黄金圈法则
[美]西蒙·斯涅克 著;磨铁文化 出品
Python代码整洁之道
汤姆·索亚历险记 彩图注音版 一二三四年级5-6-7-8-9岁小学生课外阅读经典 儿童文学无障碍有声伴读世界名著童话故事
[美]马克 吐温
Python代码整洁之道
富兰克林自传 名家全译本 改变无数人命运的励志传奇 埃隆马斯克反复推荐 赠富兰克林签名照及精美插图
[美]本杰明·富兰克林 著;李自修 译
Python代码整洁之道
意大利文艺复兴新艺术史
[美]迈克尔·韦恩·科尔 著;[美]斯蒂芬·J·坎贝尔;邵亦杨
Python代码整洁之道
汤姆素亚历险记:中小学生课外阅读快乐读书吧 儿童文学无障碍有声伴读世界名著童话故事
[美]马克·吐温
Python代码整洁之道
老人与海 彩图注音版 一二三四年级5-6-7-8-9岁小学生课外阅读经典 儿童文学无障碍有声伴读世界名著童话故事
[美]海明威
Python代码整洁之道
养育的觉醒:全面激发孩子自驱力,教你如何心平气和做妈妈
[美]凯文·莱曼 著;唐晓璐 译;斯坦威 出品
Python代码整洁之道
国际大奖图画书系列 共11册(小老鼠的恐惧的大书,大灰狼,红豆与菲比,别烦我,下雪了 ,穿靴子的猫 ,先有蛋,绿 ,特别快递,如果你想看鲸鱼 ,一个部落的孩子 ) 麦克米伦世纪
[美]莱恩·史密斯 (英)埃米莉·格雷维特 (美)劳拉·瓦卡罗·等/文 (英)埃米莉·格雷维特 等/图 彭懿 杨玲玲 阿甲 孙慧阳 白薇 译