目录

第1章  初识Python	1
 1.1 Python概述	1
1.1.1 Python起源	2
1.1.2 Python版本	2
1.1.3 Python应用	3
 1.2 搭建Python开发环境	4
1.2.1 下载Python	4
1.2.2 安装Python	4
1.2.3 启动Python	6
1.2.4 多版本Python及虚拟环境的安装	7
 1.3 Python开发环境的使用	10
1.3.1 使用自带的IDLE	11
1.3.2 常用的第三方开发工具	11
1.3.3 官网交互式环境	11
 1.4 初学者常见的问题	12
1.4.1 为什么提示“python不是内部或外部命令……”	12
1.4.2 如何在Python交互模式下运行.py文件	13
 1.5 本章实战	13
1.5.1 IDLE的简单使用	13
1.5.2 pip工具的使用	15
1.5.3 初始化环境	16
 1.6 本章小结	16
 1.7 思考与练习	16
第2章 Python语言基础	17
 2.1 Python语法特点	17
2.1.1 注释	18
2.1.2 代码规范	20
 2.2 标识符与保留字	22
2.2.1 标识符	22
2.2.2 保留字	23
 2.3 使用变量	24
2.3.1 变量的定义	24
2.3.2 变量的类型	25
 2.4 基本数据类型	25
2.4.1 数字类型	25
2.4.2 字符串类型	27
2.4.3 布尔类型	29
2.4.4 数据类型转换	29
 2.5 运算符	30
2.5.1 算术运算符	30
2.5.2 比较运算符	32
2.5.3 赋值运算符	32
2.5.4 逻辑运算符	34
2.5.5 位运算符	34
2.5.6 成员运算符	35
2.5.7 身份运算符	36
2.5.8 运算符的优先级	36
 2.6 基本输入输出	38
2.6.1 使用input()函数输入	38
2.6.2 使用print()函数输出	38
 2.7 本章实战	39
2.7.1 求和	39
2.7.2 求平方根	40
2.7.3 求水仙花数	41
2.7.4 判断素数	42
 2.8 本章小结	43
 2.9 思考与练习	44
第3章  字符与序列	45
 3.1 字符串的常见操作	46
3.1.1 字符串长度的计算	47
3.1.2 字母的大小写转换	47
3.1.3 字符串的分隔	48
3.1.4 字符串的拼接	49
3.1.5 字符串查找	52
3.1.6 字符串替换	52
3.1.7 统计字符出现的次数	53
3.1.8 去除字符串中的空格和特殊字符	53
3.1.9 格式化字符串	54
3.1.10 encode()和decode()方法	55
 3.2 序列	56
3.2.1 索引	56
3.2.2 切片	57
3.2.3 序列相加	58
3.2.4 序列相乘	59
3.2.5 检查某个元素是否是序列的成员	59
3.2.6 计算序列的长度、最大值和最小值	60
 3.3 列表序列	60
3.3.1 删除列表元素	61
3.3.2 访问列表元素	62
3.3.3 更新与扩展列表	62
3.3.4 对列表元素进行统计	63
3.3.5 对列表进行排序	64
3.3.6 列表推导式	65
 3.4 元组	67
3.4.1 元组的创建	67
3.4.2 访问元组元素	69
3.4.3 连接元组	69
3.4.4 删除元组	69
3.4.5 元组的运算符	70
3.4.6 生成器	70
3.4.7 元组与列表的区别	71
 3.5 字典	72
3.5.1 字典的创建	72
3.5.2 访问字典	72
3.5.3 修改字典	73
3.5.4 删除字典元素	73
3.5.5 字典的内置方法	73
3.5.6 字典的遍历	74
 3.6 集合	75
3.6.1 集合的创建	75
3.6.2 集合的常见操作	76
3.6.3 集合的内置方法	78
 3.7 本章实战	79
 3.8 本章小结	80
 3.9 思考与练习	81
第4章  流程控制语句	83
 4.1 分支结构	83
4.1.1 单分支if结构	83
4.1.2 双分支if…else结构	84
4.1.3 多分支if…elif…else结构	84
 4.2 循环结构	85
4.2.1 while循环	85
4.2.2 while死循环	86
4.2.3 while…else语句	86
4.2.4 for循环	87
4.2.5 循环控制语句	87
4.2.6 循环嵌套	88
 4.3 本章实战	89
4.3.1 判断闰年	89
4.3.2 使用snaps库制作数字闹钟	90
 4.4 本章小结	90
 4.5 思考与练习	90
第5章  正则表达式	92
 5.1 认识正则表达式	92
5.1.1 元字符	93
5.1.2 预定义字符	93
5.1.3 特殊分组用法	94
 5.2 re模块中的常用功能函数	95
5.2.1 re.compile函数	95
5.2.2 re.match函数	95
5.2.3 re.search函数	96
5.2.4 re.findall函数	97
5.2.5 re.finditer函数	97
5.2.6 re.split函数	98
5.2.7 re.sub函数	98
5.2.8 re.subn函数	99
5.2.9 注意事项	99
 5.3 本章实战	100
 5.4 本章小结	102
 5.5 思考与练习	102
第6章  函数	103
 6.1 函数的创建和调用	103
6.1.1 创建函数	103
6.1.2 调用函数	104
 6.2 参数传递	106
6.2.1 不可变类型参数和可变类型参数	106
6.2.2 参数形式	107
 6.3 返回值	111
6.3.1 return语句	111
6.3.2 返回多个值	111
 6.4 变量的作用域	112
6.4.1 全局变量和局部变量	113
6.4.2 global和nonlocal关键字	113
 6.5 匿名函数(lambda)	114
 6.6 Collatz序列	115
 6.7 本章小结	116
 6.8 思考与练习	116
第7章  面向对象编程	117
 7.1 面向对象编程概述	117
7.1.1 面向对象编程中的术语介绍	118
7.1.2 类的定义	118
7.1.3 类的使用	119
7.1.4 类的方法	120
 7.2 深入介绍类	120
7.2.1 类的构造方法	121
7.2.2 类的访问权限	124
 7.3 封装	129
 7.4 继承与多态	132
7.4.1 类的单继承	132
7.4.2 类的多继承	133
7.4.3 构造函数的继承	134
7.4.4 方法重写	135
7.4.5 继承下的多态	135
 7.5 类的专有方法	138
 7.6 本章实战	144
 7.7 本章小结	145
 7.8 思考与练习	146
第8章  模块	148
 8.1 模块	148
8.1.1 标准模块	149
8.1.2 import语句	149
8.1.3 搜索路径	150
8.1.4 from…import语句	151
8.1.5 创建模块	152
8.1.6 安装第三方模块	152
 8.2 模块的高级技术	153
8.2.1 __name__属性	153
8.2.2 dir函数	154
 8.3 Python中的包	155
8.3.1 包的定义	155
8.3.2 包的导入	155
8.3.3 包的组织	156
 8.4 常用的内置模块	156
8.4.1 collections	156
8.4.2 base64	159
8.4.3 struct	160
8.4.4 hashlib	161
8.4.5 itertools	163
8.4.6 XML	164
8.4.7 HTMLParser	166
 8.5 本章实战	166
8.5.1 创建模块	166
8.5.2 安装模块	170
 8.6 本章小结	171
 8.7 思考与练习	171
第9章  异常处理和程序调试	172
 9.1 异常	173
9.1.1 错误与异常的概念	173
9.1.2 Python内置异常	173
9.1.3 requests模块的相关异常	175
9.1.4 用户自定义异常	176
 9.2 异常处理	176
9.2.1 捕获所有异常	177
9.2.2 捕获指定异常	177
9.2.3 捕获多个异常	178
9.2.4 异常中的else	178
9.2.5 异常中的finally	178
9.2.6 使用raise语句主动抛出异常	179
9.2.7 使用traceback模块查看异常	180
 9.3 程序调试	181
9.3.1 调试	181
9.3.2 断言	182
9.3.3 logging	183
9.3.4 pdb	183
9.3.5 pdb.set_trace()	185
9.3.6 IDE	186
 9.4 单元测试	186
9.4.1 单元测试概述	186
9.4.2 运行单元测试	188
9.4.3 setUp()与tearDown()方法	188
 9.5 文档测试	189
 9.6 本章小结	191
 9.7 思考与练习	191
第10章  目录和文件操作	192
 10.1 基本文件操作	192
10.1.1 打开和关闭文件	192
10.1.2 文件模式	194
10.1.3 缓冲	195
 10.2 基本文件方法	196
10.2.1 读和写	196
10.2.2 重命名	200
10.2.3 序列化和反序列化	201
 10.3 目录操作	206
10.3.1 路径	207
10.3.2 目录内容	209
10.3.3 获取文件信息	210
10.3.4 重命名、移动、复制和删除文件	211
10.3.5 创建和删除目录	211
10.3.6 文件通配符	212
 10.4 轮换文件	213
 10.5 本章小结	214
 10.6 思考与练习	215
第11章  多线程编程	216
 11.1 进程和线程	216
11.1.1 进程	216
11.1.2 线程	217
11.1.3 多进程和多线程	217
 11.2 使用线程	218
11.2.1 全局解释器锁	218
11.2.2 退出线程	219
11.2.3 Python的线程模块	219
 11.3 _thread模块	219
 11.4 threading模块	222
11.4.1 守护线程	222
11.4.2 Thread对象	223
 11.5 线程同步	227
 11.6 Queue模块	229
 11.7 线程与进程的比较	230
11.7.1 线程切换	231
11.7.2 计算密集型与IO密集型	231
11.7.3 异步IO	232
 11.8 本章实战	232
11.8.1 斐波那契数列、阶乘和加和	232
11.8.2 使用队列解决生产者/消费者模型	234
11.8.3 子进程的使用	235
11.8.4 进程池的使用	236
11.8.5 多个子进程间的通信	237
 11.9 本章小结	238
 11.10 思考与练习	239
第12章  数据库编程	240
 12.1 使用dbm创建持久字典	241
12.1.1 选择dbm模块	241
12.1.2 创建持久字典	241
12.1.3 访问持久字典	242
12.1.4 dbm与关系数据库的适用场合	244
 12.2 关系数据库与SQL	244
12.2.1 SQL语言	245
12.2.2 创建数据库	247
12.2.3 定义表	248
 12.3 使用Python的DB API	249
12.3.1 下载DB API模块	249
12.3.2 创建连接	249
12.3.3 数据库的CRUD操作	250
12.3.4 使用事务并提交结果	255
12.3.5 检查模块的功能和元数据	256
12.3.6 处理错误	256
 12.4 使用mysql-connector	257
12.4.1 连接MySQL数据库	257
12.4.2 创建数据库	258
12.4.3 创建数据表	258
12.4.4 主键设置	259
12.4.5 插入数据	260
12.4.6 查询数据	261
12.4.7 where条件语句	262
12.4.8 排序	263
12.4.9 limit语句	264
12.4.10 删除记录	265
12.4.11 更新数据	265
12.4.12 删除数据表	266
 12.5 本章小结	267
 12.6 思考和练习	267
第13章  网络编程	270
 13.1 网络编程概述	270
 13.2 TCP/IP简介	271
13.2.1 TCP/IP协议族概述	271
13.2.2 应用层	271
13.2.3 传输层	274
13.2.4 网络层	275
13.2.5 IP地址与端口	276
 13.3 发送电子邮件	277
13.3.1 使用Python发送邮件	277
13.3.2 使用Python发送HTML格式的邮件	279
13.3.3 使用Python发送带附件的邮件	280
13.3.4 在HTML文本中添加图片	281
13.3.5 使用第三方SMTP服务发送邮件	282
 13.4 接收Internet邮件	283
13.4.1 通过POP3下载邮件	283
13.4.2 解析邮件	284
 13.5 套接字编程	286
13.5.1 TCP编程	286
13.5.2 UDP编程	290
 13.6 本章小结	291
 13.7 思考和练习	291
第14章  Django与投票管理系统	292
 14.1 Web框架的功能	293
14.1.1 Web框架的基本功能	293
14.1.2 Web框架的其他通用功能	293
 14.2 Django框架的安装	294
14.2.1 Django框架的特点	294
14.2.2 Django框架的版本	294
14.2.3 在Windows下安装Django	295
 14.3 使用Django框架	296
14.3.1 创建pyqi项目	296
14.3.2 创建投票应用polls	298
14.3.3 项目的目录结构	299
14.3.4 初步配置视图和urls	299
 14.4 为pyqi项目创建数据库	301
14.4.1 为pyqi项目配置数据库	301
14.4.2 为polls应用创建模型	302
14.4.3 为polls应用激活模型	303
14.4.4 测试生成的模型API	305
14.4.5 使用Django管理界面	307
 14.5 完善投票应用的视图	310
14.5.1 编写视图	311
14.5.2 为视图添加模板	312
14.5.3 渲染模板	313
14.5.4 抛出Http404异常	314
14.5.5 get_object_or_404()	314
14.5.6 为投票应用使用模板	315
14.5.7 为URL名称添加名称空间	315
 14.6 为投票应用定制表单	316
14.6.1 编写表单	316
14.6.2 通用视图	318
 14.7 管理投票应用的静态资源	320
14.7.1 自定义应用界面和风格	320
14.7.2 管理静态资源	320
 14.8 完善投票管理后台	321
14.8.1 修改后台表单	321
14.8.2 修改字段列表	325
14.8.3 更改后台界面和风格	326
 14.9 打包和发布投票系统	328
14.9.1 重用的重要性	328
14.9.2 打包项目和应用	328
14.9.3 安装和卸载自定义包	331
14.9.4 发布包	332
 14.10 本章小结	332
 14.11 思考与练习	332
参考文献	333