第Ⅰ部分 初步了解Python 3
第1章 编程基础和字符串 3
1.1编程与使用计算机的区别 3
1.1.1编程的一致性 3
1.1.2编程的可控性 4
1.1.3程序要应对变化 4
1.1.4小结 4
1.2准备工作 4
1.2.1在非Windows系统上安装Python 3.1 5
1.2.2使用Python Shell 5
1.3开始使用Python——字符串 6
1.3.1字符串概述 6
1.3.2为什么需要引号 6
1.3.3为什么有3种类型的引号 7
1.3.4使用print()函数 7
1.3.5理解不同的引号 8
1.4串联两个字符串 10
1.5用不同的方法串联字符串 11
1.6本章小结 12
1.7习题 13
第2章 数值与运算符 15
2.1不同类型的数值 15
2.2程序文件 17
2.2.1使用不同的类型 18
2.2.2基本算术 20
2.2.3一些惊喜 22
2.3使用数值 23
2.3.1求值顺序 23
2.3.2数值格式 24
2.3.3可能会发生的错误 25
2.3.4几个不寻常的例子 26
2.4本章小结 26
2.5习题 27
第3章 变量 29
3.1引用数据——使用数据的名称 29
3.1.1使用名称修改数据 30
3.1.2复制数据 31
3.1.3禁用的名称以及一些规则 31
3.2使用更多的内置类型 31
3.2.1元组——不可更改的数据序列 32
3.2.2列表——可以更改的数据序列 35
3.2.3字典——以名称索引的分组数据 36
3.2.4像列表一样处理字符串 38
3.2.5特殊类型 39
3.3序列的其他共有属性 40
3.3.1引用最后一个元素 40
3.3.2序列的范围 41
3.3.3通过附加序列增长列表 41
3.3.4使用列表临时存储数据 42
3.3.5处理集合 43
3.4本章小结 44
3.5习题 44
第Ⅱ部分Python语言和标准库 49
第4章 做出决策 49
4.1比较两个值是否相等 49
4.2比较两个值是否不相等 51
4.3比较两个值的大小 51
4.4对真值和假值取反 53
4.5观察多个比较运算的结果 54
4.6循环 57
4.6.1重复执行操作 57
4.6.2终止循环 59
4.7处理错误 62
4.8本章小结 64
4.9习题 65
第5章 函数 67
5.1将程序放在单独的文件中 67
5.2函数:在一个名称下聚集代码 69
5.2.1选择名称 70
5.2.2在函数中描述函数 70
5.2.3不同的位置相同的名称 72
5.2.4添加注释 73
5.2.5要求函数使用提供的值 73
5.2.6检查参数 75
5.2.7为参数设置默认值 77
5.2.8在函数中调用其他函数 78
5.2.9函数嵌套函数 80
5.2.10用自己的词语标记错误 81
5.3函数的层次 81
5.4本章小结 82
5.5习题 83
第6章 类与对象 85
6.1考虑编程 85
6.1.1对象的含义 85
6.1.2已经了解的对象 85
6.1.3展望:如何使用对象 87
6.2定义类 87
6.2.1如何创建对象 87
6.2.2对象和它们的作用域 95
6.3本章小结 98
6.4习题 99
第7章 组织程序 101
7.1模块 102
7.1.1导入可用模块 102
7.1.2通过已有模块创建新模块 102
7.1.3从命令行开始使用模块 104
7.1.4改变导入方式 106
7.2包 106
7.3模块和包 108
7.3.1将所有内容引入当前作用域 108
7.3.2重新导入模块和包 109
7.4测试模块和包的基础知识 111
7.5本章小结 112
7.6习题 112
第8章 文件和目录 115
8.1文件对象 115
8.1.1编写文本文件 116
8.1.2向文件中追加文本 116
8.1.3读文本文件 117
8.1.4文件异常 119
8.2路径和目录 119
8.3 os中的异常 119
8.3.1路径 120
8.3.2目录内容 122
8.3.3获取文件信息 123
8.3.4重命名、移动、复制和删除文件 125
8.3.5示例:轮换文件 126
8.3.6创建和删除目录 127
8.3.7通配 128
8.4本章小结 129
8.5习题 129
第9章Python语言的其他特性 131
9.1 lambda和filter:简单匿名函数 131
9.2 Map:短路循环 132
9.3在列表中做出决策——列表解析 133
9.4为循环生成迭代器 133
9.5使用字典的特殊字符串替换 135
9.6重要模块 137
9.6.1 getopt从命令行中得到选项 137
9.6.2使用一个以上的进程 139
9.6.3线程——在相同的进程中完成多个工作 141
9.7本章小结 143
9.8习题 144
第10章 创建模块 145
10.1研究模块 145
10.1.1导入模块 147
10.1.2查找模块 147
10.1.3理解模块 148
10.2创建模块和包 149
10.3使用类 150
10.3.1定义面向对象编程 151
10.3.2创建类 151
10.3.3扩展已有的类 152
10.4完成模块 153
10.4.1定义模块特定的错误 154
10.4.2选择导出哪些内容 154
10.4.3为模块建立文档 155
10.4.4测试模块 164
10.4.5将模块作为程序运行 165
10.5创建一个完整的模块 166
10.6安装模块 171
10.7本章小结 174
10.8习题 175
第11章 文本处理 177
11.1文本处理的用途 177
11.1.1搜索文件 178
11.1.2日志剪辑 179
11.1.3邮件筛选 179
11.2使用Os模块导航文件系统 179
11.3使用正则表达式和re模块 185
11.4本章小结 189
11.5习题 189
第Ⅲ部分 开始使用Python 193
第12章 测试 193
12.1断言 193
12.2测试用例和测试套件 195
12.3测试装置 198
12.4用极限编程整合 201
12.4.1用Python实现搜索实用程序 202
12.4.2一个更加强大的Python搜索 207
12.5软件生命周期中的正规测试 210
12.6本章小结 210
第13章 使用Python编写GUI 213
13.1 Python的GUI编程工具箱 213
13.2 Tkinter简介 215
13.3用Tkinter创建GUI小组件 215
13.3.1改变小组件的尺寸 215
13.3.2配置小组件选项 216
13.3.3使用小组件 217
13.3.4创建布局 217
13.3.5填充顺序 218
13.3.6控制小组件的外观 219
13.3.7单选按钮和复选框 220
13.3.8对话框 221
13.3.9其他小组件类型 222
13.4本章小结 222
13.5习题 223
第14章 访问数据库 225
14.1使用dbm持久字典 226
14.1.1选择dbm模块 226
14.1.2创建持久字典 227
14.1.3访问持久字典 228
14.1.4 dbm与关系数据库的适用场合 230
14.2使用关系数据库 231
14.2.1编写SQL语句 232
14.2.2定义表 234
14.2.3建立数据库 235
14.3使用Python的数据库API 237
14.3.1下载各个模块 237
14.3.2创建连接 238
14.3.3使用游标 238
14.3.4使用事务并提交结果 245
14.3.5检查模块的功能和元数据 246
14.3.6处理错误 246
14.4本章小结 247
14.5习题 248
第15章 使用Python处理XML 249
15.1 XML的含义 249
15.1.1层次标记语言 249
15.1.2一组标准 251
15.2模式/DTD 251
15.2.1文档模型的用途 251
15.2.2是否需要文档模型 252
15.3文档类型定义 252
15.3.1 DTD示例 252
15.3.2 DTD不完全是XML 253
15.3.3 DTD的局限性 253
15.4模式 254
15.4.1示例模式 254
15.4.2模式是纯粹的XML 254
15.4.3模式具有层次 255
15.4.4模式的其他优点 255
15.5 XPath 255
15.6 HTML是XML的子集 256
15.6.1 HTML DTD 256
15.6.2 HTMLParser 256
15.7 Python中可用的XML库 257
15.8 SAX的含义 257
15.8.1基于流 258
15.8.2事件驱动 258
15.8.3 DOM的含义 258
15.8.4内存中访问 258
15.9使用SAX或者DOM的理由 259
15.9.1能力权衡 259
15.9.2内存考虑 259
15.9.3速度考虑 259
15.10 Python中可用的SAX和DOM解析器 259
15.10.1 xml.sax 259
15.10.2 xml.dom.minidom 260
15.11 XSLT简介 262
15.11.1 XSLT是XML 262
15.11.2转换和格式语言 263
15.11.3函数式、模板驱动 263
15.12 lxml简介 263
15.13元素类 263
15.14使用lxml解析 266
15.15本章小结 267
15.16习题 267
第16章 网络编程 269
16.1理解协议 271
16.1.1比较协议和程序语言 271
16.1.2 Internet协议栈 272
16.1.3 Internet协议简介 273
16.2发送电子邮件 274
16.2.1 E-mail文件格式 275
16.2.2 MIME消息 276
16.2.3使用SMTP和smtplib发送邮件 284
16.3检索Internet邮件 286
16.3.1使用mailbox解析本地邮筒 286
16.3.2使用poplib从POP3服务器获取邮件 288
16.3.3使用imaplib从IMAP服务器获取邮件 290
16.3.4安全的POP3和IMAP 294
16.3.5 Webmail应用程序不是E-mail应用程序 294
16.4套接字编程 294
16.4.1套接字简介 295
16.4.2绑定到外部主机名 297
16.4.3镜像服务器 298
16.4.4镜像客户端 299
16.4.5套接字服务器 300
16.4.6多线程服务器 302
16.4.7 Python聊天服务器 303
16.4.8设计Python聊天服务器 303
16.4.9 Python聊天服务器协议 304
16.4.10 Python聊天客户端 309
16.4.11基于select的单线程多任务 312
16.5其他主题 313
16.5.1协议设计的多种考虑 313
16.5.2对等架构 314
16.6本章小结 314
16.7习题 315
第17章用C扩展编程 317
17.1扩展模块概述 318
17.2构建并安装扩展模块 320
17.3从Python向C传递参数 322
17.4从C向Python返回值 325
17.5 LAME项目 326
17.6 LAME扩展模块 330
17.7在C代码中使用Python对象 342
17.8本章小结 345
17.9习题 346
第18章 数值编程 347
18.1 Python语言中的数值 347
18.1.1整数 348
18.1.2长整数 348
18.1.3浮点数 349
18.1.4格式化数值 350
18.1.5作为数值的字符 352
18.2数学 353
18.2.1算术运算 354
18.2.2内置数学函数 355
18.3复数 357
18.4数组 359
18.5本章小结 363
18.6习题 363
第19章Django简介 365
19.1框架的定义以及使用框架的理由 365
19.2 Web框架的其他功能 366
19.3Django发展史 367
19.4理解Django的架构 368
19.4.1项目初始设置 368
19.4.2创建视图 371
19.5使用模板 373
19.6使用模板和视图 375
19.6.1模型 378
19.6.2创建模型的第一步——配置数据库设置 379
19.7创建模型:创建一个应用程序 380
19.8本章小结 382
19.9习题 383
第20章Web应用程序与Web服务 385
20.1 REST:Web架构 386
20.1.1 REST的特性 386
20.1.2 REST操作 388
20.2 HTTP:REST的实际应用 388
20.2.1可见的Web服务器 390
20.2.2 HTTP请求 393
20.2.3 HTTP响应 393
20.3 CGI:将脚本变为Web应用程序 395
20.3.1 Web服务器与CGI脚本的协议 397
20.3.2 CGI的特殊环境变量 397
20.3.3通过HTML表单接收用户输入 399
20.4 HTML表单的有限词汇 400
20.5访问表单值的安全性 401
20.6构建wiki 405
20.6.1 BittyWiki核心库 406
20.6.2 BittyWiki的Web接口 409
20.7 Web服务 418
20.8 REST Web服务 419
20.8.1 REST快速入门:在Amazon.com上寻找廉价商品 419
20.8.2 WishListBargainFinder简介 422
20.8.3向BittyWiki提供REST API 425
20.8.4使用REST Web服务实现搜索和替换功能 428
20.9 XML-RPC 432
20.9.1 XML-RPC请求 434
20.9.2 XML-RPC中的数据表示 434
20.9.3 XML-RPC响应 435
20.9.4错误处理机制 436
20.9.5通过XML-RPC展示BittyWiki API 437
20.9.6基于XML-RPC Web服务的wiki搜索和替换 440
20.10 SOAP 442
20.10.1 SOAP快速入门 442
20.10.2 SOAP请求 443
20.10.3 SOAP响应 444
20.10.4错误处理机制 444
20.10.5展示一个BittyWiki的SOAP接口 445
20.10.6基于SOAP Web服务的wiki搜索和替换 447
20.11为Web服务API创建文档 449
20.11.1人类可读的API文档 449
20.11.2 XML-RPC自省API 450
20.11.3 WSDL 451
20.12选择Web服务标准 455
20.13 Web服务礼仪 456
20.13.1 Web服务的使用者礼仪 456
20.13.2 Web服务的创建者礼仪 456
20.13.3将Web应用程序作为Web服务使用 456
20.14本章小结 456
20.15习题 457
第21章 集成Java与Python 459
21.1在Java应用程序中编写脚本 460
21.2比较各种Python实现 461
21.3安装Jython 461
21.4运行Jython 461
21.4.1交互地运行Jython 461
21.4.2运行Jython脚本 463
21.4.3控制jython脚本 463
21.4.4创建可可执行命令 464
21.5独立运行Jython 465
21.6打包基于Jython的应用程序 466
21.7集成Java和Jython 466
21.7.1在Jython中使用Java类 466
21.7.2从Jython访问数据库 471
21.7.3通过Jython编写Java EE servlet 477
21.7.4选择Jython开发工具 483
21.8使用Jython进行测试 483
21.9嵌入Jython解释器 484
21.10处理C-Python和Jython之间的差异 487
21.11本章小结 488
21.12习题 488
第Ⅳ部分 附录 491
附录A习题答案 491
附录B在线资源 519
附录C Python 3.1的新特性 521
附录D术语表 527