一、目录介绍
目录
第1章 为何学习Python
1.1 学习编程 2
1.1.1 告诉计算机做什么 2
1.1.2 编程是创意 4
1.1.3 编程是设计 4
1.2 是什么让Python如此杰出 5
1.2.1 Python简单易学 5
1.2.2 Python是真正的语言 5
1.2.3 Python“开箱即用” 6
1.2.4 Python社区规模庞大 6
1.3 在Windows系统上安装Python 7
1.3.1 安装Python 7
1.3.2 在Windows系统上运行Python程序 9
1.3.3 从命令行运行Python程序 11
1.4 Linux 14
1.4.1 在Linux系统上安装Python 14
1.4.2 Linux GUI 14
1.4.3 Linux命令行 16
1.5 Macintosh 16
1.5.1 更新Shell配置文件 17
1.5.2 设置默认应用程序 17
1.6 排除故障 18
1.6.1 语法错误 18
1.6.2 文件扩展名不对(Windows) 19
1.6.3 Python的安装位置不对(Linux) 19
1.7 文本编辑器和IDE 19
1.8 总结 20
第2章 Hunt the Wumpus
2.1 程序是什么 22
2.1.1 在屏幕上显示 23
2.1.2 使用变量存储信息 23
2.1.3 询问玩家想做什么 24
2.1.4 做出决策 24
2.1.5 循环 25
2.1.6 函数 26
2.2 您的第一个程序 27
2.2.1 Hunt the Wumpus的第一个版本 27
2.2.2 调试 29
2.3 捣鼓程序 29
2.3.1 调整洞穴数量 30
2.3.2 更友好的wumpus 30
2.3.3 多个wumpus 30
2.4 创建洞穴 31
2.4.1 列表 31
2.4.2 for循环 33
2.4.3 构造洞穴网络 33
2.5 修复微妙的错误 35
2.5.1 问题 36
2.5.2 解决方案 36
2.5.3 打造连通的洞穴网络 36
2.6 使用函数让代码更整洁 39
2.6.1 函数的基本知识 39
2.6.2 变量作用域 40
2.6.3 共享状态 41
2.7 使用函数组织游戏Hunt the Wumpus 42
2.7.1 与洞穴交互 42
2.7.2 创建洞穴 43
2.7.3 与玩家交互 44
2.7.4 程序的其他部分 45
2.8 弓和箭 47
2.9 进一步美化 49
2.10 接下来如何做 51
2.10.1 蝙蝠和深渊 52
2.10.2 让Wumpus移动 52
2.10.3 不同的洞穴网络 52
2.11 总结 52
第3章 与外部交互
3.1 开箱即用:Python库 54
3.1.1 Python标准库 54
3.1.2 其他库 54
3.1.3 使用库 55
3.1.4 库到底是什么 55
3.2 另一种提问方式 58
3.2.1 使用命令行参数 58
3.2.2 使用模块sys 58
3.3 读写文件 59
3.3.1 路径和目录(我的文件在哪里) 59
3.3.2 路径 61
3.3.3 打开文件 61
3.4 比较文件 63
3.4.1 采集文件的指纹 63
3.4.2 将文件的指纹存储到字典中 64
3.5 综合应用 65
3.6 测试程序 68
3.7 改进脚本 70
3.7.1 按顺序排列结果 70
3.7.2 比较目录 72
3.8 接下来如何做 73
3.9 总结 73
第4章 组织有序
4.1 规范程序 74
4.2 如何确定程序是正确的 75
4.2.1 手工测试太烦 75
4.2.2 功能测试 76
4.2.3 单元测试:让计算机去做 76
4.2.4 测试驱动的开发 76
4.3 编写程序 77
4.4 整合程序 80
4.4.1 测试用户界面 80
4.4.2 用输入做什么 81
4.4.3 执行命令 82
4.4.4 运行程序 85
4.5 状况评估 85
4.5.1 接下来做什么 86
4.5.2 我既繁忙又重要 88
4.5.3 列表解析 89
4.5.4 发现bug 92
4.6 存储待办事项清单 95
4.7 编辑和删除 98
4.7.1 修复一个小问题 99
4.7.2 删除待办事项 101
4.7.3 编辑待办事项 103
4.8 接下来如何做 106
4.8.1 帮助命令 106
4.8.2 撤销 106
4.8.3 不同的界面 107
4.8.4 时间管理和估算 107
4.8.5 研究一个单元测试框架 107
4.9 总结 107
第5章 面向业务的编程
5.1 让程序相互交流 110
5.1.1 CSV来救场 110
5.1.2 其他格式 111
5.2 准备工作 112
5.2.1 安装Beautiful Soup 112
5.2.2 安装Firefox和Firebug 113
5.2.3 查看网页 113
5.3 使用Python下载网页 115
5.3.1 提取想要的数据 116
5.3.2 进一步提取数据 117
5.3.3 网页抓取的注意事项 119
5.4 写入CSV文件 119
5.5 通过电子邮件发送CSV文件 121
5.5.1 电子邮件的结构 121
5.5.2 创建电子邮件 122
5.5.3 发送电子邮件 123
5.5.4 其他电子邮件模块 124
5.6 一个简单脚本——哪些地方可能出问题 125
5.6.1 未连接到网络 126
5.6.2 数据无效 126
5.6.3 数据出乎意料 126
5.6.4 无法写入数据 126
5.6.5 无法访问邮件服务器 126
5.6.6 您不必修复这些问题 127
5.7 如何处理有问题的脚本 127
5.7.1 交流 127
5.7.2 对故障的承受力 127
5.7.3 一开始就做好 128
5.7.4 失败要赶早,还要大张旗鼓 128
5.7.5 双保险 128
5.7.6 压力测试和性能测试 129
5.7.7 以后再试 129
5.8 异常 131
5.8.1 为何使用异常 131
5.8.2 程序崩溃是什么意思 131
5.8.3 捕获异常 134
5.8.4 模块traceback 135
5.9 接下来如何做 136
5.10 总结 136
第6章 类与面向对象编程
6.1 类是什么 137
6.1.1 类包含数据 138
6.1.2 类是类型 138
6.1.3 类的工作原理 138
6.1.4 您的第一个类 138
6.2 面向对象设计 140
6.3 玩家输入 143
6.4 财宝 146
6.4.1 方法该放在什么地方 146
6.4.2 寻宝 147
6.4.3 捡宝 148
6.5 在洞穴迷宫中漫步 151
6.6 怪物出没 156
6.6.1 创建怪物 156
6.6.2 一些面向对象的技巧 157
6.6.3 组合起来 158
6.7 危险与刺激 161
6.8 接下来如何做 163
6.8.1 增加怪物和财宝 164
6.8.2 扩展格斗方式和物品 164
6.8.3 添加更多冒险元素 164
6.8.4 尝试动词和名词 164
6.8.5 研究类的高级功能 164
6.9 总结 164
第7章 高级技术
7.1 面向对象 166
7.1.1 混合类 166
7.1.2 super()及注意事项 169
7.2 定制类 169
7.2.1 getattr 170
7.2.2 setattr 170
7.2.3 getattribute 172
7.2.4 特性(property) 173
7.2.5 模拟其他类型 175
7.3 生成器和迭代器 177
7.3.1 迭代器 177
7.3.2 生成器 179
7.3.3 生成器表达式 180
7.4 使用迭代器 180
7.4.1 读文件 181
7.4.2 处理日志行 183
7.4.3 提取字段 184
7.5 函数式编程 188
7.5.1 副作用 188
7.5.2 map和filter 188
7.5.3 传递和返回函数 189
7.6 接下来如何做 191
7.7 总结 191
第8章 Django
8.1 使用Django编写Web应用 193
8.1.1 安装Django 193
8.1.2 设置Django 193
8.2 编写应用 197
8.2.1 最简单的待办事项清单 197
8.2.2 使用模板 198
8.3 使用模型 201
8.3.1 设置数据库 201
8.3.2 创建模型 201
8.3.3 Django模块admin 203
8.3.4 添加管理界面 204
8.4 使用数据 206
8.4.1 使用模型 206
8.4.2 设计URL 208
8.4.3 提交表单 210
8.4.4 处理待办事项 213
8.5 最后的优化 216
8.6 接下来如何做 217
8.7 总结 217
第9章 使用Pyglet开发游戏
9.1 安装Pyglet 218
9.2 起步 220
9.3 简单的宇宙飞船 222
9.3.1 让事情发生 224
9.3.2 回到学校:牛顿第一定律及矢量 226
9.4 引力 229
9.4.1 计算引力 229
9.4.2 小心行星 232
9.5 不能缺了枪炮 234
9.6 邪恶的外星人 237
9.7 接下来如何做 242
9.7.1 添加新元素 242
9.7.2 改成别的类型 242
9.7.3 重构 243
9.7.4 获取反馈 243
9.8 总结 243
第10章 Twisted网络编程
10.1 安装Twisted 244
10.2 第一个应用程序 245
10.3 MUD初步 249
10.4 让游戏更有趣 254
10.4.1 可恨的怪物 254
10.4.2 回到聊天服务器 256
10.5 要求玩家登录 260
10.5.1 探索不熟悉的代码 260
10.5.2 整合 261
10.5.3 编写自定义状态机 265
10.6 保存玩家状态 269
10.7 接下来如何做 273
10.8 总结 273
第11章 再谈Django
11.1 身份验证 274
11.1.1 登录 275
11.1.2 添加用户 277
11.2 只列出当前用户的待办事项 278
11.2.1 修复数据库 279
11.2.2 言归正传 282
11.2.3 滴水不漏 283
11.2.4 更新接口 284
11.3 测试 285
11.3.1 单元测试 285
11.3.2 功能测试 287
11.3.3 运行测试 288
11.4 图像和样式 289
11.4.1 使用Django提供媒体内容 289
11.4.2 由另一个服务器提供媒体 291
11.4.3 最后一步 292
11.5 接下来如何做 292
11.6 总结 293
第12章 接下来如何做
12.1 再阅读一些代码 294
12.1.1 Python标准库 295
12.1.2 Python秘诀 295
12.1.3 开源项目 295
12.1.4 加入Python社区 295
12.1.5 加入邮件列表 295
12.1.6 寻找当地用户组 296
12.1.7 给开源项目帮忙 296
12.2 解决自己遇到的问题 296
12.3 其他Python库 297
12.3.1 代码剖析 297
12.3.2 日志 297
12.3.3 子进程和多任务 297
12.3.4 更复杂的分析 297
12.3.5 PIL和图像处理 298
12.3.6 XML、ElementTree和JSON 298
12.4 总结 298