为了能够使广大读者既能够掌握Python语言的基础知识,又能够将Python语言应用于某个特定的领域(如Web开发),本书介绍与Python相关的方方面面,为了便于读者学习,本书每个章节都提供了详尽的例子,结合实例讲解各个知识点。涉及的程序代码都给出了详细的注释,有助于读者轻松领会程序开发的精髓,快速提高开发技能。在学习完本书之后,相信读者能够很好地掌握Python语言,同时可以使用Python语言进行实际项目的开发。本书适合Python爱好者、大中专院校的学生、社会培训班的学生。
前言
第一篇 Python语言基础
第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 不同平台下的Python17
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.4 __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程序设计
第11章 Python的GUI开发199
11.1 Python的GUI开发选择199
11.1.1 认识Python内置的GUI库Tkinter199
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 在程序中使用Tkinter206
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开发
第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和XML247
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框架中的MVT291
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的其他应用
第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 增强的交互式环境IPython358
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扩展:PyWin32444
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