- ISBN:9787115477576
- 装帧:一般胶版纸
- 册数:暂无
- 重量:暂无
- 开本:16开
- 页数:320
- 出版时间:2018-06-01
- 条形码:9787115477576 ; 978-7-115-47757-6
本书特色
Python是使用*多的动态编程语言之一,应用广泛,学习者众多。 本书使用一个生动有趣的、基于文本的游戏主题作为讲解内容来介绍Python应用开发过程的各个方面。全书共10章,涉及简单应用开发、模块化、打包和发布应用的代码、文档规范、单元测试、重构、设计模式、性能监测、性能优化、GUI应用、MVC框架等方方面面的软件开发知识和技能。 本书适合有一定Python语言基础,想要快速掌握Python项目开发知识、提高Python开发实战技能的读者学习参考。
内容简介
Python是使用广泛的动态编程语言之一。它支持一组丰富的库和框架,从而能够用来进行快速开发。但是,如此快速的开发通常会带来一些问题,容易导致代码整体质量、性能和扩展性的降低。本书将会教你如何处理这些问题,以及如何编写出更好的Python应用程序。 本书从简单命令行应用程序的基础知识入手,帮助读者不断提高技能,直到可以设计出高效的、高级的Python应用。本书使用轻松奇幻的学习主线,用具体解决方案来应对在复杂的Python开发中遇到的实际问题。读者从关注健壮性,以及程序代码的打包和发布开始,通过提高代码的可扩展性、可重用性以及可读性来提高应用程序的生命周期,并掌握Python代码重构、设计模式和*实践。在关于性能的章节中,读者学会识别性能瓶颈并提升性能,*后还将学习如何开发Python图形界面应用程序。 通过阅读本书,您将能够: ● 通过异常处理来创建健壮的应用程序。 ● 源代码的模块化、打包和发布。 ● 编写代码文档,实施代码规范。 ● 在开发初期通过创建自动化测试发现程序漏洞。 ● 识别并重构糟糕的代码以扩大应用的生命周期。 ● 检测代码中重复出现的问题并使用设计模式。 ● 通过识别性能瓶颈并修复问题来提高代码执行效率。 ● 使用Python开发简单的图形界面应用程序。
目录
第 1章 开发简单应用 1
1.1 重要提示 2
1.2 安装的先决条件 2
1.2.1 安装Python 3
1.3 本书的主题 8
1.3.1 了解本书人物 8
1.4 简单的脚本—兽人之袭
v0.0.1 9
1.4.1 游戏简介—兽人之袭
v0.0.1 10
1.4.2 问题说明 10
1.4.3 伪代码—0.0.1版本 10
1.4.4 代码查看 11
1.4.5 运行兽人之袭v0.0.1 14
1.5 使用函数—兽人之袭
v0.0.5 14
1.5.1 重新回顾以前的版本 15
1.5.2 有攻击功能的伪代码—
版本0.0.5 17
1.5.3 代码查看 19
1.5.4 运行兽人之袭v0.0.5 21
1.6 使用面向对象编程—
兽人之袭v1.0.0 22
1.6.1 功能需求的优先度 23
1.6.2 问题说明 24
1.6.3 重新设计代码 24
1.6.4 描绘整个场景 25
1.6.5 代码查看 27
1.6.6 运行兽人之袭v1.0.0 31
1.7 Python中的抽象基类 32
1.7.1 练习 33
1.8 小结 34
1.8.1 对电子书读者非常重要的
提示 34
第 2章 异常处理 36
2.1 修改兽人之袭v1.0.0 36
2.1.1 问题调试 37
2.1.2 bug修复中…… 38
2.2 异常 39
2.2.1 什么是异常 39
2.2.2 *常见的异常 39
2.2.3 异常处理 40
2.2.4 异常的抛出和再抛出 42
2.2.5 try...except的else
代码块 43
2.2.6 finally...清理吧 44
2.3 回归游戏—兽人之袭
v1.1.0 45
2.3.1 准备工作 45
2.3.2 增加异常处理代码 46
2.3.3 运行兽人之袭v1.1.0 47
2.4 自定义异常 48
2.4.1 准备工作 48
2.4.2 自定义异常—
问题所在 49
2.4.3 编写一个新的异常类 50
2.4.4 扩展异常类 51
2.4.5 继承exception类 53
2.5 练习 55
2.6 小结 56
第3章 模块化、包和部署 57
3.1 选择一种版本控制规约 58
3.1.1 连续递增 58
3.1.2 使用日期格式 59
3.1.3 语义版本控制方案 59
3.2 代码模块化 60
3.2.1 兽人之袭v2.0.0 60
3.3 创建Python包 62
3.3.1 从包中录入 63
3.4 在PyPI上发布包 64
3.4.1 发行版本准备 65
3.4.2 上传发行版 69
3.4.3 一条命令完成所有的
事情 73
3.4.4 安装你自己的发行版 73
3.5 使用私有的PyPI仓库 75
3.5.1 步骤1—安装
pypiserver 75
3.5.2 步骤2—创建一个新的
源代码发行版 75
3.5.3 步骤3—启动本地
服务器 76
3.5.4 步骤4—安装私有
发行版 76
3.6 创建增量发布 77
3.6.1 打包并上传新版本 77
3.6.2 升级已经安装的版本 77
3.7 代码的版本控制 78
3.7.1 Git资源 78
3.7.2 安装Git 78
3.7.3 配置你的验证信息 79
3.7.4 Git基础术语 79
3.7.5 创建并使用本地仓库 80
3.8 使用Git的GUI客户端 83
3.9 练习 84
3.10 小结 85
第4章 代码文档和*佳实践 86
4.1 编写代码文档 87
4.1.1 文档字符串 88
4.1.2 reStructuredText简介 89
4.1.3 使用RST的文档
字符串 92
4.1.4 文档字符串格式化风格 94
4.1.5 自动生成文档字符串
stubs 95
4.1.6 使用Sphinx生成文档 97
4.2 Python编码标准 103
4.3 代码分析—我们做得
怎么样呢 105
4.3.1 使用IDE进行代码
分析 105
4.3.2 Pylint 106
4.4 练习 110
4.5 小结 110
第5章 单元测试和重构 111
5.1 本章的组织方式 111
5.1.1 重要说明 112
5.2 为何要进行测试 112
5.2.1 提出了一个新的需求 112
5.2.2 你实现了这个功能 113
5.2.3 但是有些事情似乎
不对了…… 114
5.2.4 它需要完全测试 115
5.3 单元测试 115
5.3.1 Python的unittest
框架 116
5.4 为应用程序编写单元测试 121
5.4.1 创建测试包 121
5.4.2 为单元测试创建新
的类 122
5.4.3 第 1个单元测试—
受伤方的选择 123
5.4.4 运行第 1个单元测试 124
5.4.5 第 2个单元测试—
占领木屋 124
5.4.6 创建自己的测试模块 127
5.4.7 批量执行单元测试 127
5.5 使用模拟库的单元测试 128
5.5.1 Mock的简介 128
5.5.2 让我们开始Mock吧 129
5.5.3 在单元测试中使用Mock
对象 131
5.5.4 使用补丁 133
5.5.5 第3个单元测试—
play方法 135
5.6 你的代码被覆盖到了吗 139
5.6.1 解决导入错误 140
5.7 其他单元测试工具 141
5.7.1 Doctest 141
5.7.2 Nose 141
5.7.3 Pytest 142
5.8 重构的前言 142
5.8.1 绕个弯路—可测试性
重构 144
5.9 重构 144
5.9.1 什么是重构 145
5.9.2 为什么要进行重构 145
5.9.3 何时进行重构 145
5.9.4 如何进行重构 146
5.9.5 移动 148
5.10 重新审视单元测试 150
5.10.1 可测试化重构 150
5.10.2 第4个单元测试—
setup_game_scenario 152
5.11 练习 152
5.11.1 重构和重新设计练习 153
5.12 小结 153
第6章 设计模式 154
6.1 设计模式的介绍 154
6.1.1 设计模式的分类 155
6.2 Python语言和设计模式 156
6.2.1 一级函数 157
6.2.2 类作为一级对象 157
6.2.3 闭包 158
6.2.4 各种特性 159
6.2.5 鸭子类型 160
6.3 本章余下内容的结构 161
6.4 快进—兽人之袭
v6.0.0 162
6.5 策略模式 164
6.5.1 策略场景—跳跃
特性 164
6.5.2 策略—主要的问题 165
6.5.3 策略—尝试解决
方案 166
6.5.4 策略—重新考虑
设计 168
6.5.5 策略方案1—
传统方法 169
6.5.6 策略方案2—
Python方法 172
6.6 简单工厂 174
6.6.1 简单工厂场景—
招募特性 174
6.6.2 简单工厂—
主要的问题 175
6.6.3 简单工厂—重新
考虑设计 176
6.6.4 简单工厂方案1—
传统方法 177
6.6.5 简单工厂方案2—
Python方法 178
6.7 抽象工厂模式 180
6.7.1 抽象工厂场景—
饰品店 181
6.7.2 抽象工厂—主要的
问题 184
6.7.3 抽象工厂—重新考虑
设计 184
6.7.4 抽象工厂方案—
Python方法 186
6.8 适配器模式 188
6.8.1 适配器模型—精灵的
远房亲戚 189
6.8.2 适配器—主要的
问题 189
6.8.3 适配器—尝试解决
方案 190
6.8.4 适配器解决方案—
Python方法 191
6.9 小结 194
第7章 性能—识别瓶颈 195
7.1 三个性能章节的总览 195
7.1.1 更注重运行时的性能 195
7.1.2 关于性能的第 1个
章节 196
7.1.3 关于性能的第 2个
章节 196
7.1.4 关于性能的第3个
章节 196
7.1.5 看一下应用性能提升 196
7.2 游戏场景—寻找黄金 197
7.2.1 顶层算法 199
7.2.2 查看*初的代码 200
7.2.3 运行代码 202
7.3 主要的问题 203
7.4 识别瓶颈 204
7.4.1 衡量执行时间 204
7.4.2 监测代码片段的运行
时间 205
7.4.3 代码分析 206
7.5 内存分析 212
7.5.1 memory_profiler包 212
7.6 算法效率和复杂度 214
7.6.1 算法效率 214
7.6.2 算法复杂度 214
7.7 大O符号 214
7.7.1 大O复杂类 215
7.8 小结 221
第8章 性能优化1 222
8.1 本章的前提 223
8.2 本章的组织方式 223
8.3 回顾“寻找黄金”的场景 224
8.3.1 选择问题的数据大小 224
8.3.2 分析*初的代码 224
8.4 优化“寻找黄金”—
第 1部分 225
8.4.1 调整算法—平方根 225
8.4.2 跳过点操作符 228
8.4.3 使用本地范围 230
8.5 性能优化的一些事项 232
8.5.1 列表推导式 233
8.5.2 记录执行时间 234
8.5.3 字典推导式 235
8.5.4 交换条件块和for
循环 235
8.5.5 在循环中使用try语句 236
8.5.6 选择正确的数据结构 237
8.5.7 collections模块 238
8.5.8 生成器和生成器
表达式 241
8.5.9 itertools模块 245
8.6 练习 247
8.7 小结 247
第9章 性能优化2—NumPy和
并行化 248
9.1 本章的先决条件 248
9.2 本章的组织方式 248
9.3 NumPy的简介 249
9.3.1 安装NumPy 250
9.3.2 创建数组对象 250
9.3.3 简单的数组操作 251
9.3.4 数组切割和索引 252
9.3.5 广播 254
9.3.6 其他功能 255
9.3.7 从哪里能获得更多关于
NumPy的信息 262
9.4 优化“寻找黄金”—
第 2部分 262
9.4.1 “寻找黄金”优化—
优化四 262
9.4.2 “寻找黄金”优化—
优化五 264
9.5 使用multiprocessing模块的
并行化 267
9.5.1 并行化简介 267
9.5.2 全局解释器锁 268
9.5.3 multiprocessing模块 268
9.6 “寻找黄金”程序并行化 271
9.6.1 重访黄金领地 271
9.6.2 “寻找黄金”优化—
优化六,并行化 273
9.7 进一步阅读 277
9.7.1 JIT编译器 277
9.8 小结 278
第 10章 简单的图形应用程序 280
10.1 GUI框架概述 281
10.1.1 Tkinter 281
10.1.2 PyQt 281
10.1.3 PySide 282
10.1.4 Kivy 282
10.1.5 wxPython 282
10.2 GUI编程设计注意事项 283
10.2.1 了解用户的需求 283
10.2.2 开发用户故事 283
10.2.3 简单性和可访问性 283
10.2.4 一致性 284
10.2.5 可预测性和熟悉性 284
10.2.6 其他设计考虑 284
10.3 事件驱动编程 284
10.3.1 事件 285
10.3.2 事件处理 285
10.3.3 事件循环 285
10.4 使用Tkinter进行GUI
编程 286
10.4.1 Tkinter的文件链接 286
10.4.2 Tkinter中的
mainloop() 286
10.4.3 简单GUI应用程序—
第 1步 287
10.4.4 简单GUI应用程序—
第 2步 289
10.4.5 Tkinter中的GUI
控件 290
10.4.6 布局管理 292
10.4.7 Tkinter中的事件 294
10.4.8 Tkinter中的事件
处理 296
10.5 项目1—兽人之袭
v10.0.0 298
10.5.1 游戏场景 298
10.5.2 问题声明 298
10.5.3 编写代码 299
10.5.4 运行应用程序 305
10.6 MVC架构 306
10.6.1 模型 307
10.6.2 视图 307
10.6.3 控制器 307
10.6.4 MVC的好处 308
10.7 项目2—兽人之袭
v10.1.0 308
10.7.1 重新修改HutGame类 308
10.7.2 创建MVC类 309
10.7.3 MVC对象间的通信 310
10.7.4 查看代码 314
10.7.5 Model类 315
10.7.6 View类 316
10.7.7 运行应用程序 317
10.8 测试GUI应用程序 317
10.8.1 测试注意事项 318
10.9 练习 319
10.10 扩展阅读 320
10.11 小结 322
作者简介
在Ninad Sathaye的职业生涯中,他有多年使用包括Python和C 在内的多种语言设计和开发性能关键应用的经验。他曾是半导体行业中的一个软件架构师,*近又转入物联网领域。他拥有机械工程硕士学位。
-
深度学习的数学
¥43.5¥69.0 -
全图解零基础word excel ppt 应用教程
¥19.0¥48.0 -
机器学习
¥59.4¥108.0 -
有限与无限的游戏:一个哲学家眼中的竞技世界
¥37.4¥68.0 -
智能硬件项目教程:基于ARDUINO(第2版)
¥31.9¥65.0 -
硅谷之火-人与计算机的未来
¥14.3¥39.8 -
元启发式算法与背包问题研究
¥38.2¥49.0 -
AI虚拟数字人:商业模式+形象创建+视频直播+案例应用
¥62.9¥89.8 -
UNIX环境高级编程(第3版)
¥164.9¥229.0 -
剪映AI
¥52.8¥88.0 -
深度学习高手笔记 卷2:经典应用
¥90.9¥129.8 -
纹样之美:中国传统经典纹样速查手册
¥76.3¥109.0 -
UG NX 12.0数控编程
¥22.1¥45.0 -
MATLAB计算机视觉与深度学习实战(第2版)
¥90.9¥128.0 -
界面交互设计理论研究
¥30.8¥56.0 -
微机组装与系统维护技术教程(第二版)
¥37.8¥43.0 -
明解C语言:实践篇
¥62.9¥89.8 -
Linux服务器架设实战(Linux典藏大系)
¥83.3¥119.0 -
Visual Basic 语言程序设计基础(第6版)
¥32.0¥45.0 -
贝叶斯推理与机器学习
¥139.3¥199.0