第一篇 Python语言基础知识第1章 Python概述 1
1.1 Python简介 1
1.2 Python的特征 2
1.3 第一个Python程序 4
1.4 搭建开发环境 5
1.4.1 Python的下载和安装 5
1.4.2 交互式命令行的使用方法 5
1.5 Python的开发工具 6
1.5.1 PythonWin的使用方法 6
1.5.2 Eclipse IDE集成开发环境 7
1.5.3 EditPlus编辑器环境的配置 7
1.6 不同平台下的Python 9
1.7 小结 9
第2章 Python的基本语法 10
2.1 Python的文件类型 10
2.2 Python的编码规则 11
2.2.1 命名规则 11
2.2.2 代码缩进与冒号 13
2.2.3 模块导入的规范 15
2.2.4 使用空行分隔代码 16
2.2.5 正确的注释 16
2.2.6 语句的分隔 19
2.3 变量和常量 20
2.3.1 变量的命名 20
2.3.2 变量的赋值 21
2.3.3 局部变量 22
2.3.4 全局变量 23
2.3.5 常量 25
2.4 数据类型 25
2.4.1 数字类型 25
2.4.2 字符串类型 27
2.5 运算符与表达式 28
2.5.1 算术运算符和算术表达式 28
2.5.2 关系运算符和关系表达式 30
2.5.3 逻辑运算符和逻辑表达式 31
2.5.4 运算符的优先级 31
2.6 小结 32
第3章 Python的控制语句 33
3.1 结构化程序设计 33
3.2 条件语句 34
3.2.1 if语句 34
3.2.2 if... elif... else语句 35
3.2.3 if语句的嵌套 36
3.2.4 实现switch语句的功能 37
3.3 循环语句 39
3.3.1 while循环 39
3.3.2 for循环 40
3.3.3 break和continue语句 42
3.4 结构化程序示例 43
3.5 小结 45
第4章 内置数据结构 46
4.1 元组 46
4.1.1 元组的创建 46
4.1.2 元组的访问 47
4.1.3 元组的遍历 49
4.2 列表 50
4.2.1 列表的创建 50
4.2.2 列表的使用方法 52
4.2.3 列表的查找、排序与反转 53
4.2.4 用列表实现堆栈和队列 54
4.3 字典 55
4.3.1 字典的创建 55
4.3.2 字典的访问 56
4.3.3 字典的方法 59
4.3.4 字典的排序与复制 62
4.3.5 全局字典——sys.modules模块 63
4.4 序列 64
4.5 小结 66
第5章 模块与函数 67
5.1 Python程序的结构 67
5.2 模块 67
5.2.1 模块的创建 68
5.2.2 模块的导入 68
5.2.3 模块的属性 69
5.2.4 模块的内置函数 70
5.2.5 自定义包 73
5.3 函数 75
5.3.1 函数的定义 75
5.3.2 函数的参数 76
5.3.3 函数的返回值 78
5.3.4 函数的嵌套 80
5.3.5 递归函数 82
5.3.6 lambda函数 84
5.3.7 Generator函数 85
5.4 小结 86
第6章 字符串与正则表达式 87
6.1 字符串的操作 87
6.1.1 字符串的格式化 87
6.1.2 字符串的转义符 89
6.1.3 字符串的合并 90
6.1.4 字符串的截取 91
6.1.5 字符串的比较 92
6.1.6 字符串的反转 94
6.1.7 字符串的查找和替换 95
6.1.8 字符串与日期的转换 96
6.2 正则表达式 97
6.2.1 正则表达式简介 97
6.2.2 使用sys.re模块处理正则表达式 100
6.3 小结 104
第7章 文件的处理 105
7.1 文件的基本操作 105
7.1.1 文件的打开或创建 105
7.1.2 文件的读取 107
7.1.3 文件的写入 109
7.1.4 文件的删除 109
7.1.5 文件的复制 111
7.1.6 文件的重命名 111
7.1.7 文件内容的查找和替换 113
7.1.8 文件的比较 114
7.1.9 配置文件的访问 115
7.2 目录的基本操作 117
7.2.1 目录的创建与删除 117
7.2.2 目录的遍历 118
7.3 文件和流 121
7.3.1 Python的流对象 121
7.3.2 模拟Java的输入、输出流 122
7.4 文件处理示例——文件属性浏览程序 123
7.5 小结 124
第8章 面向对象编程 126
8.1 面向对象编程概述 126
8.2 类和对象 127
8.2.1 类和对象的区别 127
8.2.2 类的定义 127
8.2.3 对象的创建 128
8.2.4 Python对象的体系结构 128
8.3 属性和方法 129
8.3.1 类的属性 129
8.3.2 类的方法 131
8.3.3 内部类的使用 132
8.3.4 _init_方法 133
8.3.5 _del_方法 134
8.3.6 垃圾回收机制 135
8.3.7 类的内置方法 136
8.3.8 方法的动态特性 139
8.4 继承 140
8.4.1 使用继承 141
8.4.2 抽象类的模拟 143
8.4.3 多态性 144
8.4.4 多重继承 145
8.4.5 更好的继承方式 146
8.5 运算符的重载 148
8.6 Python与设计模式 149
8.6.1 设计模式简介 149
8.6.2 设计模式示例——Python实现工厂方法 150
8.7 小结 151
第9章 异常处理与程序调试 152
9.1 异常的处理 152
9.1.1 Python中的异常 152
9.1.2 try…except的使用方法 153
9.1.3 try…finally的使用方法 155
9.1.4 使用raise抛出异常 155
9.1.5 自定义异常 156
9.1.6 assert语句的使用方法 157
9.1.7 异常信息 157
9.2 使用PythonWin调试程序 158
9.3 使用Eclipse for Python调试程序 160
9.3.1 新建工程 160
9.3.2 配置调试 161
9.3.3 设置断点 163
9.4 小结 164
第10章 Python的数据库编程 165
10.1 Python环境下的数据库编程 165
10.1.1 通过ODBC访问数据库 165
10.1.2 使用DAO对象访问数据库 167
10.1.3 使用ActiveX Data Object访问数据库 168
10.1.4 Python连接数据库的专用模块 170
10.2 Python的持久化模块 172
10.2.1 用dbhash模块读写数据 172
10.2.2 shelve模块读写数据 173
10.3 嵌入式数据库SQLite 174
10.3.1 sqlite的命令行工具 174
10.3.2 使用sqlite3模块访问sqlite数据库 175
10.4 小结 177
第二篇 Python的GUI程序设计第11章 WxPython的开发环境 179
11.1 Python所支持的GUI开发库 179
11.1.1 Tkinter 179
11.1.2 PyGTK 182
11.1.3 PyQT 185
11.2 WxPython介绍 186
11.2.1 下载和安装WxPython 187
11.2.2 第一个WxPython程序 187
11.2.3 WxPython的封装:Pythoncard 188
11.3 WxPython的开发工具 189
11.3.1 使用wxGlade开发WxPython程序 190
11.3.2 使用wxFormBuilder开发WxPython程序 190
11.3.3 使用Boa-constructor开发WxPython程序 191
11.4 小结 191
第12章 WxPython框架初步 192
12.1 WxPython的程序结构 192
12.1.1 WxPython应用程序的组成 192
12.1.2 WxPython窗口的组成 194
12.1.3 WxPython应用程序的运行过程 196
12.2 WxPython中的事件驱动编程 197
12.2.1 事件驱动的编程模型 197
12.2.2 事件的触发 197
12.2.3 事件的绑定和处理 199
12.3 WxPython的常用组件 201
12.3.1 对话框 201
12.3.2 工具栏 201
12.3.3 状态栏 202
12.4 小结 203
第13章 WxPython库中的基本组件 204
13.1 静态文本框 204
13.2 文本框 206
13.2.1 单行文本框 206
13.2.2 多行文本框 208
13.3 按钮控件 209
13.3.1 普通按钮 209
13.3.2 位图按钮 210
13.4 单选框 210
13.4.1 单选框的选择 210
13.4.2 单选框的分组 212
13.5 多选框 212
13.5.1 多选框 213
13.5.2 多选框事件 213
13.6 列表控件 215
13.6.1 列表框 215
13.6.2 下拉列表 216
13.6.3 可编辑的下拉列表 217
13.7 使用Sizers布局组件 218
13.7.1 Sizers布局管理器 218
13.7.2 Grid Sizer布局 218
13.7.3 Flex Grid Sizer布局 219
13.7.4 Grid Bag sizer布局 220
13.7.5 Box Sizer布局 221
13.8 小结 221
第14章 WxPython库中的菜单、窗口与对话框控件 222
14.1 菜单 222
14.1.1 创建菜单 222
14.1.2 菜单的事件 224
14.1.3 多级菜单 225
14.1.4 菜单的快捷键 226
14.1.5 位图菜单 227
14.1.6 上下文菜单 228
14.2 窗口 229
14.2.1 Frame窗口 229
14.2.2 带工具栏和状态栏的Frame窗口 230
14.2.3 MDI窗口 231
14.2.4 MiniFrame窗口 232
14.3 对话框 232
14.3.1 对话框的创建 233
14.3.2 提示对话框 234
14.3.3 文本输入对话框 235
14.3.4 特殊对话框 236
14.3.5 窗口与对话框的交互 236
14.4 小结 238
第15章 WxPython库中的高级控件 239
15.1 表格控件 239
15.1.1 表格控件的创建 239
15.1.2 通过PyGridTable创建表格 240
15.1.3 表格控件的单元格 241
15.1.4 处理单元格的事件 243
15.2 高级列表控件 245
15.2.1 列表控件的创建 245
15.2.2 列表控件的排序 246
15.2.3 带位图的列表控件 247
15.3 树型控件 248
15.3.1 树型控件的创建 248
15.3.2 树型控件的事件 249
15.3.3 树表控件 250
15.4 定时器控件 251
15.5 小结 253
第16章 WxPython库中的高级功能 254
16.1 WxPython下的HTML显示 254
16.1.1 HTML的显示 254
16.1.2 基于HtmlWindow的简单浏览器 256
16.2 WxPython中的XRC 257
16.2.1 使用XRC 257
16.2.2 XRC文件 258
16.3 剪贴板的操作 260
16.3.1 WxPython中的剪贴板对象 260
16.3.2 处理剪贴板对象 260
16.3.3 剪贴板操作实例 261
16.4 小结 262
第三篇 Python的Web开发 263
第17章 Python的HTML应用 263
17.1 HTML介绍 263
17.1.1 HTML的历史 263
17.1.2 SGML、HTML和XHTML三者的关系 264
17.1.3 HTML的标签 264
17.1.4 HTML的框架组成 265
17.2 URL的处理 266
17.2.1 统一资源定位符URL 266
17.2.2 URL的解析 267
17.2.3 URL的拼合 269
17.2.4 URL的分解 270
17.2.5 URL的编码与解码 271
17.2.6 中文的编码与解码 273
17.2.7 查询参数的编码 274
17.3 CGI的使用 276
17.3.1 CGI介绍 276
17.3.2 获取CGI环境信息 277
17.3.3 解析用户的输入 280
17.4 获取HTML资源 282
17.4.1 使用urlopen和urlretrieve获取HTTP资源 282
17.4.2 分析返回资源的相关信息 287
17.4.3 自定义获取资源方式 288
17.4.4 使用urllib2模块获取资源 291
17.4.5 使用httplib模块获取资源 293
17.5 HTML文档的解析 295
17.5.1 使用HTMLParser模块 295
17.5.2 sgmllib的HTML文档处理 297
17.5.3 HTML文档元素的处理 297
17.5.4 使用htmllib处理HTML文档 299
17.6 小结 302
第18章 Python和XML 303
18.1 XML介绍 303
18.1.1 XML的演进历史 303
18.1.2 XML的优点和限制 304
18.1.3 XML技术的Python支持 305
18.2 XML文档概览和验证 305
18.2.1 XML文档的基本概念 306
18.2.2 XML文档的结构良好性验证 306
18.2.3 XML文档的有效性验证 309
18.3 XML文档的结构 311
18.3.1 XML的元素和标签 311
18.3.2 元素的属性 313
18.3.3 XML的文字 315
18.3.4 字符实体 317
18.3.5 CDATA段 318
18.3.6 注释 320
18.3.7 处理指令 320
18.3.8 XML定义 321
18.4 使用SAX处理XML文档 321
18.4.1 SAX介绍 321
18.4.2 SAX处理的组成部分 322
18.5 使用DOM处理XML文档 326
18.5.1 DOM介绍 327
18.5.2 xml.dom模块中的接口操作 328
18.5.3 对XML文档的操作 335
18.6 小结 340
第19章 Python的Web开发——Django框架的应用 341
19.1 常见的Web开发框架 341
19.1.1 Zope 341
19.1.2 TurboGears 342
19.1.3 Django 343
19.1.4 其他的Web开发框架 344
19.1.5 各种开发框架的选择 345
19.2 MVC模式 345
19.2.1 MVC模式介绍 346
19.2.2 MVC模式的优点和缺点 347
19.2.3 Django框架中的MVC 347
19.3 Django开发环境的搭建 348
19.3.1 Django框架的安装 348
19.3.2 数据库的配置 348
19.4 Django框架的应用 349
19.4.1 Web应用的创建 349
19.4.2 Django中的开发服务器 350
19.4.3 创建数据库 352
19.4.4 生成Django应用 353
19.4.5 创建数据模型 354
19.4.6 URL设计 354
19.4.7 创建视图 356
19.4.8 模板系统 357
19.4.9 发布Django项目 358
19.5 Django框架的高级应用 359
19.5.1 管理界面 359
19.5.2 生成数据库数据 361
19.5.3 Session功能 362
19.5.4 国际化 364
19.6 小结 365
第20章 敏捷方法学在Python中的应用——测试驱动开发 366
20.1 测试驱动开发 366
20.1.1 测试驱动开发模式(TDD) 366
20.1.2 TDD的优势 368
20.1.3 TDD的使用步骤 368
20.2 unittest测试框架 369
20.2.1 unittest模块介绍 369
20.2.2 构建测试用例 370
20.2.3 构建测试固件 371
20.2.4 组织多个测试用例 373
20.2.5 构建测试套件 374
20.2.6 重构代码 375
20.2.7 执行测试 376
20.3 使用doctest模块进行测试 380
20.3.1 doctest模块介绍 380
20.3.2 构建可执行文档 380
20.3.3 执行doctest测试 382
20.4 小结 384
第四篇 Python的其他应用 385
第21章 Python中的进程和线程 385
21.1 进程和线程 385
21.1.1 进程和线程的概念 385
21.1.2 Python中对于进程和线程处理的支持 386
21.2 Python下的进程编程 387
21.2.1 进程的运行环境 387
21.2.2 创建进程 388
21.2.3 终止进程 389
21.3 使用subprocess模块管理进程 390
21.3.1 使用Popen类管理进程 390
21.3.2 调用外部系统命令 393
21.3.3 替代其他进程创建函数 393
21.4 进程间的信号机制 393
21.4.1 信号的处理 394
21.4.2 信号的使用规则 396
21.5 多线程概述 396
21.5.1 什么是多线程 397
21.5.2 线程的状态 397
21.5.3 Python中的线程支持 397
21.6 生成和终止线程 398
21.6.1 使用thread模块 398
21.6.2 使用threading.Thread类 400
21.7 管理线程 402
21.7.1 线程状态转移 402
21.7.2 主线程对子线程的控制 403
21.7.3 线程中的局部变量 403
21.8 线程之间的同步 404
21.8.1 临界资源和临界区 404
21.8.2 锁机制 406
21.8.3 条件变量 407
21.8.4 信号量 409
21.8.5 同步队列 410
21.8.6 线程同步小结 411
21.9 小结 412
第22章 基于Python的系统管理 413
22.1 增强的交互式环境IPython 413
22.1.1 IPython介绍 413
22.1.2 IPython的安装 414
22.1.3 IPython的启动 415
22.1.4 IPython的环境配置 416
22.1.5 IPython的退出 416
22.2 和IPython的简单交互 416
22.2.1 IPython中的输入与输出 417
22.2.2 输出提示符的区别 417
22.2.3 输出提示符不同的原因 418
22.2.4 IPython中的In和Out 420
22.3 IPython中的magic函数 420
22.3.1 Magic函数的使用和构造 420
22.3.2 目录管理 422
22.3.3 对象信息的收集 426
22.4 IPython适合于系统管理的特点 428
22.4.1 Tab补全 428
22.4.2 历史记录功能 429
22.4.3 执行外部的系统命令和运行脚本文件 432
22.4.4 对象的查看和自省 435
22.4.5 直接编辑代码 438
22.4.6 设置别名和宏 440
22.5 使用Python进行文件管理 441
22.5.1 文件的比较 441
22.5.2 文件的归档 443
22.5.3 文件的压缩 445
22.6 使用Python定时执行任务 447
22.6.1 使用休眠功能 447
22.6.2 使用sched来定时执行任务 447
22.7 小结 448
第23章 Python和网络编程 449
23.1 网络模型介绍 449
23.1.1 OSI简介 449
23.1.2 TCP/IP简介 450
23.2 Socket应用 451
23.2.1 Socket基础知识 451
23.2.2 Socket的工作方式 451
23.3 服务器端和客户端通信 452
23.3.1 服务器端的构建 452
23.3.2 客户端的构建 456
23.4 异步通信方式 458
23.4.1 使用Fork方式 458
23.4.2 使用线程方式 459
23.4.3 异步IO方式 460
23.4.4 使用asyncore模块 463
23.5 Twisted网络框架 466
23.5.1 认识Twisted框架 466
23.5.2 Twisted框架下服务器端的实现 467
23.5.3 Twisted框架下服务器端的其他处理 468
23.6 小结 470
第24章 常见的Python网络应用 471
24.1 使用FTP传输文件 471
24.1.1 FTP的工作原理和Python库的支持 471
24.1.2 FTP的登录和退出 472
24.1.3 FTP的数据传输 473
24.2 使用POP3获取邮件 474
24.2.1 POP3协议介绍 474
24.2.2 poplib模块的使用方法 475
24.3 使用SMTP发送邮件 477
24.3.1 SMTP协议介绍 477
24.3.2 smtplib模块的使用 478
24.4 使用Telnet协议远程登录 479
24.4.1 Telnet协议介绍和Python库的支持 479
24.4.2 telnetlib模块的使用方法 480
24.5 使用SNMP管理网络 481
24.5.1 SNMP协议的组成 481
24.5.2 PySNMP框架介绍及其使用方法 482
24.6 网络分析 483
24.6.1 网络分析概述 483
24.6.2 使用Scapy在网络中抓包分析 484
24.7 小结 486
第25章 图像处理和游戏开发 487
25.1 图像处理的基本概念 487
25.1.1 Python下的图像处理包 487
25.1.2 PIL支持的图像文件格式 488
25.1.3 图像处理中的其他概念 489
25.2 图像的基本处理 490
25.2.1 图像的读写操作 490
25.2.2 获取图像信息 491
25.2.3 图像文件格式的转换 492
25.2.4 图像的裁剪和合成 494
25.2.5 图像的变换 496
25.3 图像处理的高级应用 498
25.3.1 图像的通道操作 498
25.3.2 图像的增强处理 501
25.3.3 PIL中的内置滤镜 503
25.4 使用PyGame进行游戏开发 504
25.4.1 Python游戏开发包:PyGame 504
25.4.2 创建基本的Pygame窗口 506
25.4.3 事件系统 508
25.5 小结 509
第26章 Python语言的扩展与嵌入 510
26.1 Python语言的扩展 510
26.1.1 Python扩展简介 510
26.1.2 一个C扩展的例子 511
26.1.3 模块方法表和初始化函数 512
26.1.4 编译和测试 513
26.2 Python语言的嵌入 515
26.2.1 Python嵌入简介 515
26.2.2 一个Python嵌入的例子 516
26.2.3 更好的嵌入 517
26.3 小结 519
第27章 Windows下的Python 520
27.1 组件对象模型 520
27.1.1 组件对象模型介绍 520
27.1.2 COM结构 521
27.1.3 COM对象的交互 521
27.2 Python对COM技术的支持 522
27.2.1 Python中的Windows扩展:PyWin32 522
27.2.2 客户端COM组件 523
27.2.3 实现COM组件 524
27.3 Windows下的常见Python应用 528
27.3.1 对Word的自动访问 528
27.3.2 对Excel的自动访问 529
27.3.3 对Powerpoint的自动访问 530
27.3.4 对Outlook的自动访问 532
27.4 小结 532