第一篇 Python语言基础 1
第1章 进入Python的世界 1
1.1 Python的由来 1
1.2 Python的特性 2
1.3 第一个Python程序 3
1.4 搭建开发环境 4
1.4.1 Python的下载和安装 4
1.4.2 交互式命令行的使用 10
1.5 Python的开发工具 11
1.5.1 PyCharm的使用 11
1.5.2 Eclipse IDE的介绍 13
1.5.3 EditPlus编辑器环境的配置 15
1.6 不同平台下的Python 17
1.7 小结 17
1.8 习题 18
第2章 必须知道的Python基础语法 19
2.1 Python的文件类型 19
2.1.1 源代码 19
2.1.2 字节代码 19
2.1.3 优化代码 20
2.2 Python的编码规范 20
2.2.1 命名规则 20
2.2.2 代码缩进与冒号 23
2.2.3 模块导入的规范 24
2.2.4 使用空行分隔代码 25
2.2.5 正确的注释 26
2.2.6 语句的分隔 28
2.3 变量和常量 30
2.3.1 变量的命名 30
2.3.2 变量的赋值 31
2.3.3 局部变量 32
2.3.4 全局变量 32
2.3.5 常量 34
2.4 数据类型 35
2.4.1 数字 35
2.4.2 字符串 37
2.5 运算符与表达式 38
2.5.1 算术运算符和算术表达式 38
2.5.2 关系运算符和关系表达式 40
2.5.3 逻辑运算符和逻辑表达式 40
2.6 小结 41
2.7 习题 42
第3章 Python的控制语句 43
3.1 结构化程序设计 43
3.2 条件判断语句 44
3.2.1 if条件语句 44
3.2.2 if...elif...else判断语句 46
3.2.3 if语句也可以嵌套 46
3.2.4 switch语句的替代方案 48
3.3 循环语句 50
3.3.1 while循环 50
3.3.2 for循环 51
3.3.3 break和continue语句 53
3.4 结构化程序示例 54
3.5 小结 56
3.6 习题 57
第4章 Python数据结构 58
4.1 元组结构 58
4.1.1 元组的创建 58
4.1.2 元组的访问 59
4.1.3 元组的遍历 61
4.2 列表结构 62
4.2.1 列表的创建 62
4.2.2 列表的使用 64
4.2.3 列表的查找、排序、反转 65
4.2.4 列表实现堆栈和队列 66
4.3 字典结构 68
4.3.1 字典的创建 68
4.3.2 字典的访问 69
4.3.3 字典的方法 71
4.3.4 字典的排序、复制 74
4.3.5 全局字典——sys.modules模块 76
4.4 序列 77
4.5 小结 79
4.6 习题 79
第5章 模块与函数 80
5.1 Python程序的结构 80
5.2 模块 81
5.2.1 模块的创建 81
5.2.2 模块的导入 81
5.2.3 模块的属性 83
5.2.4 模块的内置函数 83
5.2.5 自定义包 86
5.3 函数 88
5.3.1 函数的定义 88
5.3.2 函数的参数 89
5.3.3 函数的返回值 92
5.3.4 函数的嵌套 95
5.3.5 递归函数 97
5.3.6 lambda函数 98
5.3.7 Generator函数 99
5.4 小结 101
5.5 习题 101
第6章 字符串与正则表达式 102
6.1 常见的字符串操作 102
6.1.1 字符串的格式化 102
6.1.2 字符串的转义符 104
6.1.3 字符串的合并 106
6.1.4 字符串的截取 107
6.1.5 字符串的比较 108
6.1.6 字符串的反转 109
6.1.7 字符串的查找和替换 110
6.1.8 字符串与日期的转换 112
6.2 正则表达式应用 113
6.2.1 正则表达式简介 113
6.2.2 使用re模块处理正则表达式 115
6.3 小结 121
6.4 习题 121
第7章 使用Python处理文件 122
7.1 文件的常见操作 122
7.1.1 文件的创建 122
7.1.2 文件的读取 124
7.1.3 文件的写入 126
7.1.4 文件的删除 127
7.1.5 文件的复制 128
7.1.6 文件的重命名 129
7.1.7 文件内容的搜索和替换 130
7.1.8 文件的比较 131
7.1.9 配置文件的访问 133
7.2 目录的常见操作 135
7.2.1 创建和删除目录 135
7.2.2 目录的遍历 136
7.3 文件处理示例——文件属性浏览程序 137
7.4 小结 139
7.5 习题 140
第8章 面向对象编程 141
8.1 面向对象的概述 141
8.2 类和对象 142
8.2.1 类和对象的区别 142
8.2.2 类的定义 143
8.2.3 对象的创建 143
8.3 属性和方法 144
8.3.1 类的属性 144
8.3.2 类的方法 146
8.3.3 内部类的使用 148
8.3 _init_方法 149
8.3.5 _del_方法 150
8.3.6 垃圾回收机制 151
8.3.7 类的内置方法 152
8.3.8 方法的动态特性 156
8.4 继承 157
8.4.1 使用继承 157
8.4.2 抽象基类 159
8.4.3 多态性 160
8.4.4 多重继承 161
8.4.5 Mixin机制 163
8.5 运算符的重载 164
8.6 Python与设计模式 167
8.6.1 设计模式简介 167
8.6.2 设计模式示例——Python实现工厂方法 167
8.7 小结 168
8.8 习题 169
第9章 异常处理与程序调试 170
9.1 异常的处理 170
9.1.1 Python中的异常 170
9.1.2 try...except的使用 171
9.1.3 try...finally的使用 173
9.1.4 使用raise抛出异常 174
9.1.5 自定义异常 174
9.1.6 assert语句的使用 175
9.1.7 异常信息 176
9.2 使用自带IDLE调试程序 177
9.3 使用Eclipse IDE调试程序 179
9.3.1 新建工程 179
9.3.2 配置调试 179
9.3.3 设置断点 182
9.4 小结 183
9.5 习题 184
第10章 Python数据库编程 185
10.1 数据库简介 185
10.2 Python DATABASE API简介 186
10.3 Python连接数据库的专用模块 187
10.3.1 数据库专用模块的下载与安装 187
10.3.2 Python连接Oracle数据库 190
10.3.3 Python连接MySQL数据库 191
10.3.4 Python连接SQL Server数据库 194
10.3.5 Python连接SQLite数据库 196
10.4 使用Python的持久化模块读写数据 197
10.5 小结 198
10.6 习题 198
第二篇 Python的GUI程序设计 199
第11章 Python的GUI开发 199
11.1 Python的GUI开发选择 199
11.1.1 认识Python内置的GUI库Tkinter 199
11.1.2 使用Tkinter进行开发 200
11.1.3 认识PyQT GUI库 203
11.1.4 使用PyQT GUI库进行开发 203
11.2 小结 204
11.3 习题 204
第12章 GUI编程与Tkinter相关组件介绍 205
12.1 GUI程序开发简介 205
12.2 Tkinter及其主要组件 206
12.2.1 在程序中使用Tkinter 206
12.2.2 顶层窗口 206
12.2.3 标签 207
12.2.4 框架 207
12.2.5 按钮 208
12.2.6 输入框 208
12.2.7 单选按钮 209
12.2.8 复选按钮 209
12.2.9 消息 210
12.2.10 滚动条 211
12.2.11 列表框 211
12.3 Tkinter所有组件简介 212
12.4 小结 212
12.5 习题 213
第三篇 Python的Web开发 215
第13章 Python的HTML应用 215
13.1 HTML介绍 215
13.1.1 HTML的历史 215
13.1.2 SGML、HTML、XHTML、HTML5的关系 216
13.1.3 HTML的标签 216
13.1.4 HTML的框架组成 217
13.2 URL的处理 218
13.2.1 统一资源定位符 218
13.2.2 URL的解析 219
13.2.3 URL的拼合 221
13.2.4 URL的分解 222
13.2.5 URL的编解码 223
13.2.6 中文的编解码 225
13.2.7 查询参数的编码 226
13.3 CGI的使用 228
13.3.1 CGI介绍 228
13.3.2 获取CGI环境信息 230
13.3.3 解析用户的输入 232
13.4 获取HTML资源 235
13.4.1 使用urlopen和urlretrieve获取HTTP资源 235
13.4.2 分析返回资源的相关信息 240
13.4.3 使用http.client模块获取资源 242
13.5 HTML文档的解析 244
13.6 小结 246
13.7 习题 246
第14章 Python和XML 247
14.1 XML介绍 247
14.1.1 XML的演进历史 247
14.1.2 XML的优点和限制 248
14.1.3 XML技术的Python支持 249
14.2 XML文档概览和验证 250
14.2.1 XML文档的基础概念 250
14.2.2 XML文档的结构良好性验证 251
14.2.3 XML文档的有效性验证 253
14.3 分析XML文档结构 255
14.3.1 XML的元素和标签 256
14.3.2 元素的属性 258
14.3.3 XML的名字 259
14.3.4 字符实体 261
14.3.5 CDATA段 262
14.3.6 注释 264
14.3.7 处理指令 265
14.3.8 XML定义 266
14.4 使用SAX处理XML文档 266
14.4.1 SAX介绍 266
14.4.2 SAX处理的组成部分 267
14.5 使用DOM处理XML文档 271
14.5.1 DOM介绍 271
14.5.2 xml.dom模块中的接口操作 272
14.5.3 对XML文档的操作 280
14.6 小结 286
14.7 习题 286
第15章 Python的Web开发——Django框架的应用 287
15.1 常见的Web开发框架 287
15.2 MVC模式 290
15.2.1 MVC模式介绍 290
15.2.2 MVC模式的优缺点 290
15.2.3 Django框架中的MVT 291
15.3 Django开发环境的搭建 292
15.3.1 Django框架的安装 292
15.3.2 数据库的配置 293
15.4 Django框架的基本应用 294
15.4.1 Web应用的创建 294
15.4.2 Django中的开发服务器 296
15.4.3 创建数据库 297
15.4.4 生成Django应用 298
15.4.5 创建数据模型 299
15.4.6 URL设计 300
15.4.7 创建视图 302
15.4.8 模板系统 303
15.5 Django框架的高级应用 305
15.5.1 管理界面 305
15.5.2 生成数据库数据 307
15.5.3 Session功能 308
15.6 小结 310
15.7 习题 310
第四篇 Python的其他应用 311
第16章 敏捷方法学在Python中的应用——测试驱动开发 311
16.1 测试驱动开发 311
16.1.1 测试驱动开发模式 311
16.1.2 TDD的优势 312
16.1.3 TDD的使用步骤 313
16.2 unittest框架 314
16.2.1 unittest模块介绍 314
16.2.2 构建测试用例 315
16.2.3 构建测试固件 316
16.2.4 组织多个测试用例 318
16.2.5 构建测试套件 319
16.2.6 重构代码 321
16.2.7 执行测试 322
16.3 使用doctest进行测试 324
16.3.1 doctest模块介绍 324
16.3.2 构建可执行文档 325
16.3.3 执行doctest测试 326
16.4 小结 328
16.5 习题 328
第17章 Python中的进程和线程 329
17.1 进程和线程 329
17.1.1 进程和线程的概念 329
17.1.2 Python中对于进程和线程处理的支持 330
17.2 Python下的进程编程 331
17.2.1 进程运行环境 331
17.2.2 创建进程 332
17.2.3 终止进程 333
17.3 使用subprocess模块管理进程 334
17.3.1 使用Popen类管理进程 334
17.3.2 调用外部系统命令 337
17.3.3 替代其他进程创建函数 337
17.4 进程间的信号机制 338
17.4.1 信号的处理 338
17.4.2 信号使用的规则 340
17.5 多线程概述 340
17.5.1 什么是多线程 341
17.5.2 线程的状态 341
17.5.3 Python中的线程支持 341
17.6 生成和终止线程 342
17.6.1 使用_thread模块 342
17.6.2 使用threading.Thread类 344
17.7 管理线程 346
17.7.1 线程状态转移 346
17.7.2 主线程对子线程的控制 347
17.7.3 线程中的局部变量 348
17.8 线程之间的同步 349
17.8.1 临界资源和临界区 349
17.8.2 锁机制 351
17.8.3 条件变量 352
17.8.4 信号量 355
17.8.5 同步队列 355
17.8.6 线程同步小结 356
17.9 小结 357
17.10 习题 357
第18章 基于Python的系统管理 358
18.1 增强的交互式环境IPython 358
18.1.1 IPython介绍 358
18.1.2 IPython的安装 359
18.1.3 IPython的启动 360
18.1.4 IPython的环境配置 360
18.2 和IPython的简单交互 360
18.2.1 IPython中的输入和输出 360
18.2.2 输出提示符的区别 361
18.2.3 输出提示符有区别的原因 362
18.3 IPython中的magic函数 363
18.3.1 magic函数的使用和构造 364
18.3.2 目录管理 364
18.3.3 对象信息的收集 368
18.3.4 magic函数小结 370
18.4 IPython适合于系统管理的特点 371
18.4.1 Tab补全 371
18.4.2 历史记录功能 372
18.4.3 执行外部系统命令和运行文件 374
18.4.4 对象查看和自省 377
18.4.5 直接编辑代码 379
18.4.6 设置别名和宏 381
18.5 使用Python进行文件管理 383
18.5.1 文件的比较 383
18.5.2 文件的归档 384
18.5.3 文件的压缩 387
18.6 使用Python定时执行任务 389
18.6.1 使用休眠功能 389
18.6.2 使用sched模块来定时执行任务 389
18.7 小结 390
18.8 习题 390
第19章 Python和网络编程 391
19.1 网络模型介绍 391
19.1.1 OSI简介 391
19.1.2 TCP/IP简介 392
19.2 Socket应用 393
19.2.1 Socket基础 393
19.2.2 Socket的工作方式 393
19.3 服务器端和客户端通信 394
19.3.1 服务器端的构建 394
19.3.2 客户端的构建 399
19.4 异步通信方式 400
19.4.1 使用Fork方式 400
19.4.2 使用线程方式 401
19.4.3 使用异步IO方式 402
19.4.4 使用asyncore模块 405
19.5 Twisted网络框架 408
19.5.1 Twisted框架介绍 408
19.5.2 Twisted框架下服务器端的实现 409
19.5.3 Twisted框架下服务器端的其他处理 410
19.6 小结 413
19.7 习题 413
第20章 常见的Python网络应用 414
20.1 使用FTP传输文件 414
20.1.1 FTP的工作原理和Python库支持 414
20.1.2 FTP的登录和退出 415
20.1.3 FTP的数据传输 416
20.2 使用POP3获取邮件 418
20.2.1 POP3协议介绍 418
20.2.2 poplib模块的使用 419
20.3 使用SMTP发送邮件 420
20.3.1 SMTP协议介绍 420
20.3.2 smtplib模块的使用 420
20.4 使用Telnet远程登录 422
20.4.1 Telnet协议介绍和Python库支持 422
20.4.2 telnetlib模块的使用 422
20.5 小结 423
20.6 习题 423
第21章 图像处理 424
21.1 图像处理相关概念 424
21.1.1 Python下的图像处理包 424
21.1.2 Pillow支持的图像文件格式 425
21.1.3 图像处理中的其他概念 426
21.2 基本的图像处理 427
21.2.1 图像的读写操作 427
21.2.2 获取图像信息 428
21.2.3 图像文件格式的转换 429
21.2.4 图像的裁剪和合成 431
21.2.5 图像的变换 433
21.3 图像处理的高级应用 435
21.3.1 图像的通道操作 435
21.3.2 对图像的增强 438
21.3.3 Pillow中的内置滤镜 440
21.4 小结 441
21.5 习题 441
第22章 Windows下的Python开发 442
22.1 组件对象模型 442
22.1.1 组件对象模型介绍 442
22.1.2 COM结构 443
22.1.3 COM对象的交互 443
22.2 Python对COM技术的支持 444
22.2.1 Python中的Windows扩展:PyWin32 444
22.2.2 客户端COM组件 445
22.2.3 实现COM组件 446
22.3 Windows下的常见Python应用 449
22.3.1 对Word的自动访问 449
22.3.2 对Excel的自动访问 451
22.3.3 对PowerPoint的自动访问 452
22.3.4 对Outlook的自动访问 454
22.4 小结 455
22.5 习题 455