目 录
第1 章 Python 3 概述
1.1 Python 简介 2
1.1.1 Python 的前世今生 2
1.1.2 Python 的应用场合 2
1.1.3 Python 的特性 3
1.1.4 Python 的版本 4
1.2 Python 开发环境 5
1.2.1 在Windows 系统中安装Python 3 5
1.2.2 在Linux 系统中安装Python 3 7
1.2.3 在mac OS 系统中安装Python 3 7
1.3 第一个程序——Hello World! · 8
1.3.1 代码示例 8
1.3.2 代码解析 9
1.3.3 注释 9
1.3.4 IDLE 简介与代码调试 10
1.3.5 输入/输出函数 · 16
1.4 实验 18
1.4.1 好用的集成开发工具 · 18
1.4.2 PyCharm 的安装 · 19
1.4.3 示例:绘制桃心 · 21
1.4.4 示例简析 22
1.5 小结 23
1.6 习题 23
第2 章 基本语法
2.1 代码格式 25
2.1.1 编码 25
2.1.2 注释 26
2.1.3 缩进 27
2.1.4 行宽 27
2.1.5 空行 27
2.1.6 空格 28
2.2 Python 语言构成要素 29
2.2.1 标识符 · 29
XII Python 语言(第2 版)
2.2.2 关键字 · 29
2.2.3 变量 29
2.2.4 函数和方法 · 30
2.2.5 属性和类 30
2.2.6 模块和包 30
2.2.7 规定 31
2.3 变量与数据类型 · 32
2.3.1 变量 32
2.3.2 变量命名规则 32
2.3.3 数据类型 32
2.3.4 查看数据类型 34
2.3.5 数据类型的转换 · 34
2.4 运算符 · 35
2.4.1 算术运算符 · 35
2.4.2 比较运算符 · 35
2.4.3 复合赋值运算符 · 36
2.4.4 位运算符 36
2.4.5 逻辑运算符 · 37
2.4.6 成员运算符 · 37
2.4.7 身份运算符 · 37
2.4.8 运算符优先级 38
2.5 实验 38
2.5.1 常量和变量的使用 38
2.5.2 运算符和表达式的使用 39
2.5.3 type()函数的使用 39
2.5.4 help()函数的使用 40
2.6 小结 41
2.7 习题 41
第3 章 基本数据类型
3.1 数字 42
3.1.1 数字的表示 · 42
3.1.2 数字类型的转换 · 43
3.1.3 数字的运算 · 43
3.1.4 数字相关函数 43
3.2 元组 45
3.2.1 创建元组 45
3.2.2 使用元组 45
3.2.3 删除元组 46
3.2.4 元组的内置函数 · 47
3.3 列表 47
3.3.1 创建列表 47
3.3.2 使用列表 48
3.3.3 删除元素和列表 · 49
3.3.4 列表的内置函数与其他方法 49
3.4 字典 50
3.4.1 创建字典 50
3.4.2 使用字典 51
3.4.3 删除元素和字典 · 52
3.4.4 字典的内置函数和方法 52
3.5 集合 53
3.5.1 创建集合 53
3.5.2 使用集合 54
3.5.3 删除元素和集合 · 55
3.5.4 集合的方法 · 56
3.6 数据类型转换 57
3.6.1 六大数据类型之间的转换 · 57
3.6.2 类型转换的使用场景 · 58
3.7 实验 58
3.7.1 不可变类型的使用 58
3.7.2 可变类型的使用 · 59
3.8 小结 61
3.9 习题 61
第4 章 流程控制
4.1 流程图 · 62
4.1.1 流程图符号 · 62
4.1.2 流程图示例 · 63
4.2 顺序结构 64
4.2.1 输入、处理和输出 64
4.2.2 顺序程序示例 67
4.3 选择结构 68
4.3.1 单分支(if...) · 69
4.3.2 双分支(if...else)· 70
4.3.3 多分支(if...elif...else) 70
4.3.4 分支嵌套 71
4.4 循环结构 72
4.4.1 for 循环(包含range()函数) · 72
4.4.2 for 循环嵌套 73
4.4.3 for...if...else 循环 74
4.4.4 break 及continue 语句 75
XIV Python 语言(第2 版)
4.4.5 while 循环 · 75
4.5 迭代器 · 76
4.5.1 iter()函数 76
4.5.2 next()函数 · 77
4.5.3 生成器函数 · 78
4.6 实验 79
4.6.1 使用条件语句 79
4.6.2 使用for 语句 · 80
4.6.3 使用while 语句 80
4.6.4 使用break 语句 81
4.6.5 使用continue 语句 82
4.6.6 使用迭代器 · 82
4.7 小结 84
4.8 习题 84
第5 章 字符串与正则表达式
5.1 字符串 · 86
5.1.1 创建字符串 · 86
5.1.2 使用字符串 · 87
5.1.3 字符串的格式化 · 90
5.1.4 字符串的内置函数 91
5.2 正则表达式 · 95
5.2.1 认识正则表达式 · 95
5.2.2 re 模块 · 96
5.3 实验 98
5.3.1 使用字符串处理函数 · 98
5.3.2 使用正则表达式 · 98
5.3.3 使用re 模块 99
5.4 小结 99
5.5 习题 99
第6 章 函数
6.1 函数概述 101
6.1.1 函数的定义 101
6.1.2 全局变量 · 102
6.1.3 局部变量 · 103
6.2 函数的参数和返回值 · 104
6.2.1 参数传递的方式 105
6.2.2 位置参数和关键字参数 · 105
6.2.3 默认值参数 106
6.2.4 可变参数 · 107
6.2.5 函数的返回值 · 108
6.3 函数的调用 · 109
6.3.1 函数的调用方法 109
6.3.2 嵌套调用 · 109
6.3.3 使用闭包 · 110
6.3.4 递归调用 · 110
6.4 实验 · 111
6.4.1 声明和调用函数 111
6.4.2 在调试窗口中查看变量的值 · 112
6.4.3 使用函数参数和返回值 · 114
6.4.4 使用闭包和递归函数 116
6.4.5 使用Python 的内置函数 116
6.5 小结 · 117
6.6 习题 · 117
第7 章 模块
7.1 模块概述 · 118
7.1.1 模块与程序 118
7.1.2 命名空间 · 119
7.1.3 模块导入方法 · 120
7.1.4 自定义模块和包 121
7.2 安装第三方模块 · 122
7.3 模块应用实例 125
7.3.1 日期和时间:datetime 模块 125
7.3.2 读写JSON 数据:json 模块 128
7.3.3 系统相关:sys 模块 130
7.3.4 数学:math 模块 · 131
7.3.5 随机数:random 模块 · 133
7.4 在Python 中调用R 语言 135
7.4.1 安装rpy2 模块 135
7.4.2 安装R 语言工具 135
7.4.3 测试安装 · 137
7.4.4 调用R 示例 137
7.5 实验 138
7.5.1 使用datetime 模块 · 138
7.5.2 使用sys 模块 139
7.5.3 使用与数学有关的模块 · 140
7.5.4 自定义和使用模块 · 141
7.6 小结 141
XVI Python 语言(第2 版)
7.7 习题 142
第8 章 对象和类
8.1 面向对象概述 143
8.1.1 什么是面向对象编程 143
8.1.2 面向对象术语简介 · 143
8.2 类的定义与使用 · 144
8.2.1 类的定义 · 144
8.2.2 类的使用 · 145
8.2.3 类的构造方法及专有方法 145
8.2.4 类的访问权限 · 146
8.2.5 获取对象信息 · 147
8.3 类的特点 148
8.3.1 封装 · 148
8.3.2 多态 · 148
8.3.3 继承 · 149
8.3.4 多重继承 · 153
8.4 实验 154
8.4.1 声明类 154
8.4.2 类的继承和多态 155
8.4.3 复制对象 · 156
8.5 小结 157
8.6 习题 157
第9 章 异常
9.1 异常概述 158
9.1.1 认识异常 · 158
9.1.2 处理异常 · 158
9.1.3 抛出异常 · 163
9.2 异常处理流程 163
9.3 自定义异常 · 163
9.4 实验 165
9.4.1 利用try…except 处理除数为0 的异常 · 165
9.4.2 自定义异常 165
9.4.3 raise 关键字 166
9.4.4 内置异常处理语句 · 166
9.5 小结 167
9.6 习题 167
第10 章 文件操作
10.1 打开文件 · 168
10.1.1 访问文件的模式 · 169
10.1.2 文件缓冲区 · 169
10.2 基本的文件方法 170
10.2.1 读和写 · 170
10.2.2 读取行 · 170
10.2.3 关闭文件 171
10.2.4 重命名文件 · 172
10.2.5 删除文件 172
10.3 输入/输出函数 172
10.3.1 输出到屏幕 · 172
10.3.2 读取键盘输入 173
10.4 基本的目录方法 173
10.4.1 创建目录 173
10.4.2 显示当前工作目录 173
10.4.3 改变目录 174
10.4.4 删除目录 174
10.5 实验 · 174
10.5.1 文件操作 174
10.5.2 目录操作 175
10.5.3 I/O 函数 · 176
10.6 小结 · 176
10.7 习题 · 177
第11 章 项目实战:爬虫程序
11.1 爬虫概述 · 178
11.1.1 准备工作 179
11.1.2 爬虫类型 179
11.1.3 爬虫原理 180
11.2 爬虫三大库 180
11.2.1 Requests 库 · 181
11.2.2 BeautifulSoup 库 · 185
11.2.3 lxml 库· 191
11.3 案例剖析:酷狗TOP500 数据爬取 · 196
11.3.1 思路简析 196
11.3.2 代码实现 196
11.3.3 代码分析 197
11.4 Scrapy 框架 · 198
XVIII Python 语言(第2 版)
11.4.1 Scrapy 爬虫框架 · 198
11.4.2 Scrapy 的安装 199
11.4.3 Scrapy 的使用 201
11.5 实验 · 204
第12 章 项目实战:数据可视化
12.1 matplotlib 简介 · 206
12.1.1 Pyplot 模块介绍 · 206
12.1.2 plot()函数 · 209
12.1.3 绘制子图 210
12.1.4 添加标注 211
12.1.5 pylab 模块应用 213
12.2 Artist 模块介绍 · 214
12.2.1 Artist 模块概述 214
12.2.2 Artist 的属性 · 215
12.3 pandas 绘图 216
12.4 案例剖析:词云图 · 218
12.4.1 思路简析 219
12.4.2 代码实现 220
12.4.3 代码分析 221
12.5 实验 · 222
第13 章 项目实战:数据分析
13.1 数据清洗 · 223
13.1.1 编码问题 223
13.1.2 缺失值分析 · 224
13.1.3 去除异常值 · 224
13.1.4 去除重复值与冗余信息 225
13.2 数据存取 · 225
13.2.1 CSV 文件的存取 225
13.2.2 JSON 文件的存取 · 227
13.2.3 XLSX 文件的存取 227
13.2.4 MySQL 数据库文件的存取 · 229
13.3 NumPy · 234
13.3.1 NumPy 简介 235
13.3.2 NumPy 基础 235
13.4 案例剖析:房天下西安二手房数据分析 · 239
13.4.1 思路简析 239
13.4.2 代码实现 239
13.4.3 代码分析 240
目 录 XIX
13.5 实验 · 244
第14 章 Django
14.1 Django 概述 245
14.1.1 基本介绍 245
14.1.2 Django 的安装 · 246
14.1.3 创建第一个项目 · 248
14.2 Django 框架 250
14.2.1 Django 管理工具 250
14.2.2 Django 模板 251
14.2.3 Django 模块 258
14.2.4 Django 表单 263
14.2.5 Django 视图 268
14.2.6 Django 路由 270
14.3 Django 开发实战 271
14.3.1 需求分析 271
14.3.2 系统设计 271
14.3.3 编码实现 272
14.3.4 测试与上线 · 292
14.4 小结 · 293
14.5 习题 · 293
第15 章 项目实战:机器学习
15.1 机器学习概述 · 295
15.1.1 机器学习的内涵 · 295
15.1.2 机器学习的分类 · 297
15.1.3 典型模型的实现流程 · 299
15.1.4 典型应用场景 302
15.2 scikit-learn 简介 · 302
15.2.1 scikit-learn 的特点与功能 302
15.2.2 scikit-learn 的安装与测试 303
15.2.3 基于scikit-learn 的模型训练流程 · 305
15.2.4 scikit-learn 应用举例 307
15.3 Keras 简介 309
15.3.1 Keras 的特点与功能 309
15.3.2 Keras 的安装与测试 310
15.3.3 基于Keras 的模型训练流程 312
15.3.4 Keras 应用举例 314
15.4 案例剖析:鸢尾花分类 · 317
15.4.1 思路简析 317
XX Python 语言(第2 版)
15.4.2 代码实现 318
15.4.3 代码分析 320
15.5 实验 · 327
第16 章 项目实战:自然语言处理
16.1 自然语言处理概述 · 328
16.1.1 NLP 的前生今世 328
16.1.2 NLP 的相关概念 330
16.1.3 NLP 的常用工具 331
16.1.4 NLP 的应用领域 333
16.2 NLTK 简介· 333
16.2.1 NLTK 的特点与功能 · 334
16.2.2 NLTK 的安装与测试 · 335
16.2.3 NLTK 应用举例 · 338
16.3 gensim 简介 340
16.3.1 gensim 的特点 · 340
16.3.2 gensim 的核心概念 · 340
16.3.3 gensim 的安装与测试 341
16.3.4 gensim 应用举例 343
16.4 案例剖析:文本情感分析 346
16.4.1 思路简介 346
16.4.2 代码实现 347
16.4.3 代码分析 349
16.5 实验 · 351
第17 章 项目实战:推荐系统
17.1 推荐系统概述 · 352
17.1.1 推荐系统的发展历程 · 352
17.1.2 推荐系统的技术分类 · 353
17.1.3 推荐结果的评价指标 · 354
17.1.4 推荐系统的典型应用 · 356
17.2 基于内容的推荐技术简介 357
17.2.1 基于内容的推荐技术的基本思想 357
17.2.2 基于内容的推荐技术的实现流程 357
17.2.3 基于内容的推荐技术的优缺点 · 358
17.3 协同过滤技术概述 · 359
17.3.1 协同过滤技术简介 359
17.3.2 基于用户的协同过滤 · 360
17.3.3 基于物品的协同过滤 · 361
17.3.4 基于模型的协同过滤 · 361
17.3.5 协同过滤推荐技术的优缺点 362
17.4 混合推荐技术概述 · 363
17.4.1 混合推荐技术的基本思想 · 363
17.4.2 混合推荐技术的实现原理 · 363
17.5 案例剖析:电影推荐 367
17.5.1 思路简介 367
17.5.2 代码实现 368
17.5.3 代码分析 371
17.6 实验 · 376
参考文献 ....................................................................................................... 377
附录A Python 代码风格指南:PEP 8 ..................................................... 380
附录B IPython 指南 .................................................................................. 383
附录C PyCharm 指南 .............................................................................. 387
附录C PyCharm 指南 .............................................................................. 389