书籍 Python程序设计与算法基础教程的封面

Python程序设计与算法基础教程PDF电子书下载

江红,余青松编著

购买点数

13

出版社

北京:清华大学出版社

出版时间

2019

ISBN

标注页数

395 页

PDF页数

422 页

图书目录

第1章 Python概述 1

1.1 初识Python语言 1

1.1.1 Python语言简介 1

1.1.2 Python语言的特点 1

1.1.3 Python语言的应用范围 2

1.2 Python语言版本和开发环境 2

1.2.1 Python语言的版本 2

1.2.2 Python语言的实现 2

1.2.3 Python语言的集成开发环境 3

1.3 下载和安装Python 3

1.3.1 下载Python 3

1.3.2 安装Python 4

1.3.3 安装和管理Python扩展包 4

1.4 使用Python解释器解释执行Python程序 6

1.4.1 运行Python解释器 6

1.4.2 运行Python集成开发环境 7

1.5 使用文本编辑器和命令行编写和执行Python源文件程序 8

1.5.1 编写输出“Hello,World!”的程序 8

1.5.2 输出“Hello,World!”程序的源代码分析 9

1.5.3 运行Python源代码程序 9

1.5.4 命令行参数 10

1.6 使用集成开发环境IDLE编写和执行Python源文件程序 11

1.6.1 使用IDLE编写程序 11

1.6.2 使用IDLE编辑程序 12

1.7 在线帮助和相关资源 12

1.7.1 Python交互式帮助系统 12

1.7.2 Python文档 14

1.7.3 Python官网 15

1.7.4 Python扩展库索引 15

1.8 复习题 16

1.9 上机实践 17

1.10 案例研究:安装和使用其他Python环境 17

第2章 Python语言基础 18

2.1 Python程序概述 18

2.1.1 引例 18

2.1.2 Python程序的构成 18

2.2 Python对象和引用 19

2.2.1 Python对象概述 19

2.2.2 使用字面量创建实例对象 19

2.2.3 使用类对象创建实例对象 20

2.2.4 数据类型 20

2.2.5 变量和对象的引用 20

2.2.6 Python是动态类型语言 21

2.2.7 Python是强类型语言 21

2.2.8 对象内存示意图 22

2.2.9 对象的值比较和引用判别 22

2.2.10 不可变对象和可变对象 23

2.3 标识符及其命名规则 23

2.3.1 标识符 23

2.3.2 保留关键字 24

2.3.3 Python预定义标识符 24

2.3.4 命名规则 25

2.4 变量和赋值语句 25

2.4.1 变量的声明和赋值 25

2.4.2 链式赋值语句 25

2.4.3 复合赋值语句 26

2.4.4 删除变量 26

2.4.5 序列解包赋值 26

2.4.6 常量 27

2.5 表达式和运算符 27

2.5.1 表达式的组成 27

2.5.2 表达式的书写规则 28

2.5.3 运算符概述 28

2.5.4 Python运算符 28

2.6 语句 29

2.6.1 Python语句 29

2.6.2 Python语句的书写规则 29

2.6.3 复合语句及其缩进书写规则 30

2.6.4 注释语句 30

2.6.5 空语句 31

2.7 函数和模块 31

2.7.1 函数的创建和调用 31

2.7.2 内置函数 32

2.7.3 模块函数 32

2.7.4 函数API 32

2.8 类和对象 33

2.8.1 创建类对象 33

2.8.2 实例对象的创建和调用 33

2.9 模块和包 33

2.10 复习题 34

2.11 上机实践 36

2.12 案例研究:使用Pillow库处理图像文件 36

第3章 程序流程控制 38

3.1 顺序结构 38

3.2 选择结构 38

3.2.1 分支结构的形式 39

3.2.2 单分支结构 39

3.2.3 双分支结构 40

3.2.4 多分支结构 40

3.2.5 if语句的嵌套 42

3.2.6 if语句的典型示例代码 43

3.2.7 选择结构综合举例 43

3.3 循环结构 44

3.3.1 可迭代对象 44

3.3.2 range对象 45

3.3.3 for循环 45

3.3.4 while循环 45

3.3.5 循环的嵌套 47

3.3.6 break语句 47

3.3.7 continue语句 48

3.3.8 死循环 49

3.3.9 else子句 49

3.3.10 enumerate()函数和循环 50

3.3.11 zip()函数和循环 50

3.3.12 map()函数和循环 51

3.3.13 循环语句的典型示例代码 51

3.3.14 循环结构综合举例 52

3.4 复习题 53

3.5 上机实践 55

3.6 案例研究:使用嵌套循环实现图像处理算法 58

第4章 常用内置数据类型 59

4.1 Python内置数据类型概述 59

4.1.1 数值数据类型 59

4.1.2 序列数据类型 59

4.1.3 集合数据类型 60

4.1.4 字典数据类型 60

4.1.5 NoneType、NotImplementedType和EllipsisType 60

4.1.6 其他数据类型 60

4.2 int类型 60

4.2.1 整型字面量 61

4.2.2 int对象 61

4.2.3 int对象的方法 61

4.2.4 整数的运算 62

4.3 float类型 62

4.3.1 浮点类型字面量 63

4.3.2 float对象 63

4.3.3 float对象的方法 63

4.3.4 浮点数的运算 64

4.4 complex类型 64

4.4.1 复数类型字面量 64

4.4.2 complex对象 65

4.4.3 complex对象的属性和方法 65

4.4.4 复数的运算 65

4.5 bool类型 66

4.5.1 布尔值字面量 66

4.5.2 bool对象 66

4.5.3 逻辑运算符 66

4.6 str类型 67

4.6.1 字符串字面量 67

4.6.2 字符串编码 67

4.6.3 转义字符 68

4.6.4 str对象 68

4.6.5 str对象的属性和方法 69

4.6.6 字符串的运算 69

4.6.7 对象转换为字符串 69

4.6.8 字符串的格式化 69

4.6.9 格式化字符串变量 70

4.7 比较关系运算和条件表达式 70

4.7.1 条件表达式 70

4.7.2 关系和测试运算符 71

4.8 算术运算符和位运算符 72

4.8.1 算术运算符 72

4.8.2 位运算符 72

4.9 混合运算和数值类型转换 73

4.9.1 隐式转换 73

4.9.2 显式转换 73

4.10 内置标准数学函数 74

4.10.1 内置数学运算函数 74

4.10.2 数制转换函数 74

4.11 复习题 74

4.12 上机实践 77

4.13 案例研究:科学计算和数据分析 81

第5章 序列数据类型 82

5.1 Python序列数据概述 82

5.1.1 数组 82

5.1.2 Python内置的序列数据类型 82

5.2 序列数据的基本操作 83

5.2.1 序列的长度、最大值、最小值、求和 83

5.2.2 序列的索引访问操作 83

5.2.3 序列的切片操作 84

5.2.4 序列的连接和重复操作 85

5.2.5 序列的成员关系操作 85

5.2.6 序列的比较运算操作 86

5.2.7 序列的排序操作 86

5.2.8 内置函数all()和any() 86

5.2.9 序列的拆分 87

5.3 元组 87

5.3.1 使用元组字面量创建元组实例对象 87

5.3.2 使用tuple对象创建元组实例对象 88

5.3.3 元组的序列操作 88

5.4 列表 88

5.4.1 使用列表字面量创建列表实例对象 88

5.4.2 使用list对象创建列表实例对象 88

5.4.3 列表的序列操作 89

5.4.4 list对象的方法 89

5.4.5 列表解析表达式 90

5.5 字符串 90

5.5.1 字符串的序列操作 90

5.5.2 字符串编码 90

5.5.3 字符串的格式化 91

5.6 字节序列 93

5.6.1 bytes常量 93

5.6.2 创建bytes对象 94

5.6.3 创建bytearray对象 94

5.6.4 bytes和bytearray的序列操作 95

5.6.5 字节编码和解码 95

5.7 复习题 95

5.8 上机实践 98

5.9 案例研究:猜单词游戏 98

第6章 输入和输出 100

6.1 输入和输出概述 100

6.2 命令行参数 100

6.2.1 sys.argv与命令行参数 100

6.2.2 argparse模块和命令行参数解析 101

6.3 标准输入和标准输出函数 102

6.3.1 输入和输出函数 102

6.3.2 交互式用户输入 103

6.3.3 运行时提示输入密码 103

6.4 文件和文件对象 104

6.4.1 文件对象和open()函数 104

6.4.2 文件的打开、写入、读取和关闭 104

6.4.3 with语句和上下文管理协议 105

6.5 标准输入、输出和错误流 106

6.5.1 标准输入、输出和错误流文件对象 106

6.5.2 读取任意长度的输入流 106

6.5.3 标准输入、输出和错误流重定向 107

6.6 重定向和管道 107

6.6.1 重定向标准输出到一个文件 108

6.6.2 重定向文件到标准输入 108

6.6.3 管道 109

6.6.4 过滤器 110

6.7 复习题 111

6.8 上机实践 112

6.9 案例研究:21点扑克牌游戏 112

第7章 错误和异常处理 113

7.1 程序的错误 113

7.1.1 语法错误 113

7.1.2 运行时错误 113

7.1.3 逻辑错误 114

7.2 异常处理 115

7.2.1 异常处理概述 115

7.2.2 内置的异常类 115

7.2.3 引发异常 116

7.2.4 捕获处理异常机制概述 117

7.2.5 Python虚拟机捕获处理异常 117

7.2.6 使用try…except…else…finally语句捕获处理异常 117

7.2.7 捕获异常的顺序 118

7.2.8 finally块和发生异常后的处理 118

7.2.9 自定义异常类 119

7.3 断言处理 119

7.3.1 断言处理概述 119

7.3.2 assert语句和AssertionError类 120

7.3.3 启用/禁用断言 120

7.4 程序的基本调试方法 121

7.4.1 语法错误的调试 121

7.4.2 运行时错误的调试 121

7.4.3 逻辑错误的调试 121

7.5 使用logging模块输入日志 122

7.5.1 logging模块概述 122

7.5.2 logging的配置和使用 123

7.6 复习题 125

7.7 上机实践 126

7.8 案例研究:使用调试器调试Python程序 127

第8章 函数和函数式编程 128

8.1 函数概述 128

8.1.1 函数的基本概念 128

8.1.2 函数的功能 128

8.1.3 Python中函数的分类 128

8.2 函数的声明和调用 129

8.2.1 函数对象的创建 129

8.2.2 函数的调用 129

8.2.3 函数的副作用 130

8.3 参数的传递 131

8.3.1 形式参数和实际参数 131

8.3.2 形式参数变量和对象引用传递 132

8.3.3 传递不可变对象的引用 132

8.3.4 传递可变对象的引用 132

8.3.5 可选参数 133

8.3.6 位置参数和命名参数 133

8.3.7 可变参数 134

8.3.8 强制命名参数 135

8.3.9 参数类型检查 135

8.4 函数的返回值 136

8.4.1 return语句和函数返回值 136

8.4.2 多条return语句 136

8.4.3 返回多个值 137

8.5 变量的作用域 137

8.5.1 全局变量 137

8.5.2 局部变量 138

8.5.3 全局语句global 138

8.5.4 非局部语句nonlocal 139

8.5.5 类成员变量 140

8.5.6 输出局部变量和全局变量 140

8.6 递归函数 140

8.6.1 递归函数的定义 140

8.6.2 递归函数的原理 141

8.6.3 编写递归函数时需要注意的问题 142

8.6.4 递归函数的应用:最大公约数 142

8.6.5 递归函数的应用:汉诺塔 143

8.7 内置函数的使用 144

8.7.1 内置函数一览 144

8.7.2 eval()函数 144

8.7.3 exec()函数 145

8.7.4 compile()函数 145

8.8 Python函数式编程基础 145

8.8.1 作为对象的函数 145

8.8.2 高阶函数 145

8.8.3 map()函数 146

8.8.4 filter()函数 146

8.8.5 Lambda表达式和匿名函数 146

8.8.6 operator模块和操作符函数 147

8.8.7 functools.reduce()函数 148

8.8.8 偏函数 148

8.8.9 sorted()函数 148

8.8.10 函数装饰器 149

8.9 复习题 150

8.10 上机实践 152

8.11 案例研究:井字棋游戏 152

第9章 面向对象的程序设计 153

9.1 面向对象概念 153

9.1.1 对象的定义 153

9.1.2 封装 153

9.1.3 继承 153

9.1.4 多态性 153

9.2 类对象和实例对象 154

9.2.1 类对象 154

9.2.2 实例对象 154

9.3 属性 155

9.3.1 实例对象属性 155

9.3.2 类对象属性 156

9.3.3 私有属性和公有属性 156

9.3.4 @property装饰器 157

9.3.5 特殊属性 158

9.3.6 自定义属性 159

9.4 方法 159

9.4.1 对象实例方法 159

9.4.2 静态方法 160

9.4.3 类方法 161

9.4.4 __init__()方法和__new__()方法 162

9.4.5 __del__()方法 162

9.4.6 私有方法与公有方法 163

9.4.7 方法的重载 164

9.5 继承 165

9.5.1 派生类 165

9.5.2 查看继承的层次关系 165

9.5.3 类成员的继承和重写 166

9.6 对象的特殊方法 166

9.6.1 对象的特殊方法概述 166

9.6.2 运算符重载与对象的特殊方法 167

9.6.3 @functools.total_ordering装饰器 169

9.6.4 __call__()方法和可调用对象 169

9.7 对象的引用、浅拷贝和深拷贝 170

9.7.1 对象的引用 170

9.7.2 对象的浅拷贝 170

9.7.3 对象的深拷贝 170

9.8 可迭代对象:迭代器和生成器 171

9.8.1 可迭代对象 171

9.8.2 迭代器 171

9.8.3 迭代器协议 171

9.8.4 可迭代对象的迭代:iter()函数和next()函数 172

9.8.5 可迭代对象的迭代:for语句 172

9.8.6 自定义可迭代对象和迭代器 172

9.8.7 生成器函数 173

9.8.8 反向迭代:reversed迭代器 174

9.8.9 生成器表达式 174

9.8.10 range可迭代对象 175

9.8.11 map迭代器和itertools.starmap迭代器 175

9.8.12 filter迭代器和itertools.filterfalse迭代器 175

9.8.13 zip迭代器和itertools.zip_longest迭代器 176

9.8.14 enumerate迭代器 176

9.8.15 无穷序列迭代器itertools.count、cycle和repeat 177

9.8.16 累计迭代器itertools.accumulate 177

9.8.17 级联迭代器itertools.chain 177

9.8.18 选择压缩迭代器itertools.compress 178

9.8.19 截取迭代器itertools.dropwhile和takewhile 178

9.8.20 切片迭代器itertools.islice 178

9.8.21 分组迭代器itertools.groupby 178

9.8.22 返回多个迭代器itertools.tee 179

9.8.23 组合迭代器itertools.combinations和combinations_with_replacement 179

9.8.24 排列迭代器itertools.permutations 179

9.8.25 笛卡儿积迭代器itertools.product 180

9.9 自定义类应用举例 180

9.9.1 Color类 180

9.9.2 Histogram类 181

9.10 复习题 183

9.11 上机实践 184

9.12 案例研究:文本相似度比较分析 184

第10章 模块和客户端 185

10.1 模块化程序设计的概念 185

10.1.1 模块化程序设计 185

10.1.2 模块的API 185

10.1.3 模块的实现 186

10.1.4 模块的客户端 187

10.1.5 模块化程序设计的优越性 187

10.2 模块的设计和实现 187

10.2.1 模块设计的一般原则 187

10.2.2 API设计 188

10.2.3 创建模块 188

10.2.4 模块的私有函数 189

10.2.5 模块的测试代码 189

10.2.6 编写模块文档字符串 190

10.2.7 按字节编译的.pyc文件 191

10.3 模块的导入和使用 191

10.3.1 导入模块和使用模块 191

10.3.2 导入模块中的成员 191

10.3.3 重新加载模块 192

10.3.4 动态导入模块 192

10.4 包 192

10.4.1 包的概念 192

10.4.2 创建包 193

10.4.3 包的导入和使用 193

10.5 模块的导入顺序 194

10.5.1 导入模块时的搜索顺序 194

10.5.2 模块搜索路径 195

10.5.3 dir()函数 195

10.6 名称空间与名称查找顺序 196

10.6.1 名称空间概述 196

10.6.2 名称查找顺序 196

10.6.3 顶层模块和__name__变量 196

10.6.4 Python解释器 197

10.6.5 全局名称空间 197

10.6.6 局部名称空间 198

10.6.7 类和对象名称空间 199

10.7 复习题 199

10.8 上机实践 199

10.9 案例研究:基于模块的库存管理系统 200

第11章 算法与数据结构基础 201

11.1 算法及其性能分析 201

11.1.1 算法概述 201

11.1.2 算法的时间复杂度分析 201

11.1.3 增长量级 202

11.1.4 算法的空间复杂度分析 203

11.2 查找算法 203

11.2.1 顺序查找法 203

11.2.2 二分查找法 204

11.2.3 Python语言提供的查找算法 205

11.3 排序算法 206

11.3.1 冒泡排序法 206

11.3.2 选择排序法 207

11.3.3 插入排序法 208

11.3.4 归并排序法 209

11.3.5 快速排序法 210

11.3.6 Python语言提供的排序算法 211

11.4 常用数据结构 211

11.4.1 数据结构概述 211

11.4.2 常用数据结构概述 212

11.4.3 Python中的collections模块 212

11.5 数组 212

11.5.1 列表和数组 212

11.5.2 array.array对象和数组 213

11.6 栈和队列 214

11.6.1 栈的实现:使用列表 214

11.6.2 deque对象 214

11.6.3 deque作为栈 215

11.6.4 deque作为队列 215

11.7 集合 216

11.7.1 集合的定义 216

11.7.2 集合解析表达式 216

11.7.3 判断集合元素是否存在 217

11.7.4 集合的运算:并集、交集、差集和对称差集 217

11.7.5 集合的比较运算:相等、子集和超集 218

11.7.6 集合的长度、最大值、最小值、元素和 218

11.7.7 可变集合的方法 218

11.8 字典 219

11.8.1 对象的哈希值 219

11.8.2 字典的定义 219

11.8.3 字典的访问操作 220

11.8.4 字典的视图对象 220

11.8.5 字典的遍历 220

11.8.6 字典解析表达式 221

11.8.7 判断字典键是否存在 221

11.8.8 字典对象的长度和比较 221

11.8.9 字典对象的方法 222

11.8.10 defaultdict对象 222

11.8.11 OrderedDict对象 223

11.8.12 ChainMap对象 223

11.8.13 Counter对象 224

11.9 collections模块的其他数据结构 225

11.9.1 namedtuple对象 225

11.9.2 UserDict、UserList和UserString对象 226

11.10 应用举例 226

11.10.1 去除列表中的重复项 226

11.10.2 基于字典的通讯录 227

11.11 复习题 228

11.12 上机实践 231

11.13 案例研究:程序运行时间度量分析 232

第12章 图形用户界面 233

12.1 图形用户界面概述 233

12.1.1 tkinter 233

12.1.2 其他GUI库简介 233

12.2 tkinter概述 234

12.2.1 tkinter模块 234

12.2.2 图形用户界面的构成 234

12.2.3 框架和GUI应用程序类 235

12.2.4 tkinter主窗口 235

12.3 几何布局管理器 236

12.3.1 pack几何布局管理器 236

12.3.2 grid几何布局管理器 237

12.3.3 place几何布局管理器 238

12.4 事件处理 239

12.4.1 事件类型 239

12.4.2 事件绑定 239

12.4.3 事件处理函数 240

12.5 常用组件 240

12.5.1 Label 240

12.5.2 LabelFrame 241

12.5.3 Button 241

12.5.4 Message 243

12.5.5 Entry 243

12.5.6 Text 243

12.5.7 Radiobutton 245

12.5.8 Checkbutton 245

12.5.9 Listbox 247

12.5.10 OptionMenu 248

12.5.11 Scale 250

12.5.12 Toplevel 250

12.5.13 ttk子模块控件 251

12.6 对话框 251

12.6.1 通用消息对话框 252

12.6.2 文件对话框 253

12.6.3 颜色选择对话框 253

12.6.4 通用对话框应用举例 254

12.6.5 简单对话框 255

12.7 菜单和工具栏 256

12.7.1 创建主菜单 257

12.7.2 创建上下文菜单 258

12.7.3 菜单应用举例 259

12.8 基于wxPython的图形用户界面设计入门 261

12.8.1 wxPython概述 261

12.8.2 安装wxPython库 261

12.8.3 wxPython应用程序的基本架构 261

12.8.4 使用wxPython开发简易文本编辑器 262

12.9 复习题 263

12.10 上机实践 265

12.11 案例研究:简易图形用户界面计算器 265

第13章 图形绘制 266

13.1 Python绘图模块概述 266

13.2 基于tkinter的图形绘制 267

13.2.1 基于tkinter的画布绘图概述 267

13.2.2 创建画布对象 267

13.2.3 绘制矩形 267

13.2.4 绘制椭圆 268

13.2.5 绘制圆弧 268

13.2.6 绘制线条 269

13.2.7 绘制多边形 269

13.2.8 绘制字符串 270

13.2.9 应用举例:绘制函数图形 270

13.3 基于turtle模块的海龟绘图 271

13.3.1 海龟绘图概述 271

13.3.2 turtle模块概述 271

13.3.3 绘制正方形 272

13.3.4 绘制多边形 272

13.3.5 绘制圆形螺旋 273

13.3.6 递归图形 273

13.3.7 海龟绘图的应用实例 274

13.4 基于Matplotlib模块的绘图 275

13.4.1 Matplotlib模块概述 275

13.4.2 安装Matplotlib模块 275

13.4.3 使用Matplotlib模块绘图概述 276

13.4.4 绘制函数曲线 276

13.4.5 绘制多个图形 276

13.4.6 绘制直方图 277

13.5 复习题 278

13.6 上机实践 278

13.7 案例研究:汉诺塔问题求解动画 280

第14章 数值日期和时间处理 281

14.1 相关模块概述 281

14.1.1 数值处理的相关模块 281

14.1.2 日期和时间处理的相关模块 281

14.2 math模块和数学函数 281

14.2.1 math模块的API 281

14.2.2 math模块应用举例 284

14.3 cmath模块和复数数学函数 285

14.4 random模块和随机函数 286

14.4.1 种子和随机状态 286

14.4.2 随机整数 286

14.4.3 随机序列 287

14.5 数值运算模块NumPy 288

14.5.1 数值运算模块的基本使用 288

14.5.2 创建数组 289

14.5.3 处理数组 289

14.5.4 数组应用举例 290

14.6 日期和时间处理 290

14.6.1 相关术语 290

14.6.2 时间对象 291

14.6.3 测量程序运行时间 291

14.6.4 日期对象 292

14.6.5 获取当前日期时间 292

14.6.6 日期时间格式化为字符串 292

14.6.7 日期时间字符串解析为日期时间对象 293

14.7 应用举例 293

14.7.1 蒙特卡洛模拟:赌徒破产命运 293

14.7.2 使用随机数估值圆周率 295

14.7.3 程序运行时间测量 295

14.8 复习题 296

14.9 上机实践 297

14.10 案例研究:使用pandas进行数据分析和处理 298

第15章 字符串和文本处理 299

15.1 相关模块概述 299

15.1.1 字符串和文本处理的相关模块 299

15.1.2 字符串处理的常用方法 299

15.2 字符串处理的常用操作 299

15.2.1 字符串的类型判断 299

15.2.2 字符串的大小写转换 300

15.2.3 字符串的填充、空白和对齐 300

15.2.4 字符串的测试、查找和替换 301

15.2.5 字符串的拆分和组合 301

15.2.6 字符串的翻译和转换 302

15.2.7 字符串应用举例 302

15.3 正则表达式 303

15.3.1 正则表达式语言概述 303

15.3.2 正则表达式引擎 304

15.3.3 普通字符和转义字符 304

15.3.4 字符类和预定义字符类 304

15.3.5 边界匹配符 305

15.3.6 重复限定符 305

15.3.7 匹配算法:贪婪和懒惰 306

15.3.8 选择分支 307

15.3.9 分组和向后引用 307

15.3.10 正则表达式的匹配模式 309

15.3.11 常用正则表达式 309

15.4 正则表达式模块re 309

15.4.1 匹配和搜索函数 309

15.4.2 匹配选项 310

15.4.3 正则表达式对象 310

15.4.4 匹配对象 311

15.4.5 匹配和替换 311

15.4.6 分隔字符串 312

15.5 正则表达式应用举例 312

15.5.1 字符串包含验证 312

15.5.2 字符串的查找和拆分 312

15.5.3 字符串的替换和清除 313

15.5.4 字符串的查找和截取 313

15.6 应用举例 314

15.6.1 文本统计 314

15.6.2 基因预测 315

15.6.3 字符串的简单加密和解密 315

15.7 复习题 316

15.8 上机实践 318

15.9 案例研究:NLTK与自然语言处理 319

第16章 文件和数据交换 320

16.1 文件操作相关模块概述 320

16.2 文本文件的读取和写入 320

16.2.1 文本文件的写入 320

16.2.2 文本文件的读取 321

16.2.3 文本文件的编码 322

16.3 二进制文件的读取和写入 322

16.3.1 二进制文件的写入 323

16.3.2 二进制文件的读取 323

16.4 随机文件访问 324

16.5 内存文件的操作 325

16.5.1 StringIO和内存文本文件的操作 325

16.5.2 BytesIO和内存二进制文件的操作 325

16.6 文件的压缩和解压缩 326

16.7 CSV格式文件的读取和写入 326

16.7.1 csv.reader对象和CSV文件的读取 327

16.7.2 csv.writer对象和CSV文件的写入 327

16.7.3 csv.DictReader对象和CSV文件的读取 328

16.7.4 csv.DictWriter对象和CSV文件的写入 328

16.7.5 CSV文件格式化参数和Dialect对象 329

16.8 输入重定向和管道 330

16.8.1 FileInput对象 330

16.8.2 fileinput模块的函数 331

16.8.3 输入重定向 331

16.9 对象序列化 332

16.9.1 对象序列化概述 332

16.9.2 pickle模块和对象序列化 333

16.9.3 json模块和JSON格式数据 333

16.10 复习题 334

16.11 上机实践 335

16.12 案例研究:百度音乐批量下载器 335

第17章 数据库访问 336

17.1 数据库基础 336

17.1.1 数据库的概念 336

17.1.2 关系数据库 336

17.2 Python数据库访问模块 337

17.2.1 通用数据库访问模块 337

17.2.2 专用数据库访问模块 338

17.2.3 SQLite数据库和sqlite3模块 338

17.3 使用sqlite3模块连接和操作SQLite数据库 339

17.3.1 访问数据库的步骤 339

17.3.2 创建数据库和表 340

17.3.3 数据库表的插入、更新和删除操作 341

17.3.4 数据库表的查询操作 341

17.4 使用SQLiteStudio查看和维护SQLite数据库 342

17.5 复习题 342

17.6 上机实践 343

17.7 案例研究:基于数据库和GUI的教务管理系统 343

第18章 网络编程和通信 344

18.1 网络编程的基本概念 344

18.1.1 网络基础知识 344

18.1.2 TCP/IP协议简介 344

18.1.3 IP地址和域名 345

18.1.4 统一资源定位器 346

18.2 基于socket的网络编程 346

18.2.1 socket概述 346

18.2.2 创建socket对象 348

18.2.3 将服务器端socket绑定到指定地址 348

18.2.4 服务器端socket开始侦听 349

18.2.5 连接和接收连接 349

18.2.6 发送和接收数据 349

18.2.7 简单TCP程序:Echo Server 350

18.2.8 简单UDP程序:Echo Server 351

18.2.9 UDP程序:Quote Server 352

18.3 基于urllib的网络编程 353

18.3.1 打开和读取URL网络资源 353

18.3.2 创建Request对象 353

18.4 基于http的网络编程 354

18.5 基于ftplib的网络编程 354

18.5.1 创建FTP对象 354

18.5.2 创建FTP_TLS对象 355

18.6 基于poplib和smtplib的网络编程 356

18.6.1 使用poplib接收邮件 356

18.6.2 使用smtplib发送邮件 357

18.7 复习题 357

18.8 上机实践 358

18.9 案例研究:网络爬虫案例 358

第19章 并行计算:进程、线程和协程 359

19.1 并行处理概述 359

19.1.1 进程、线程和协程 359

19.1.2 Python语言与并行处理相关模块 360

19.2 基于线程的并发处理 360

19.2.1 threading模块概述 360

19.2.2 使用Thread对象创建线程 361

19.2.3 自定义派生于Thread的对象 361

19.2.4 线程加入 362

19.2.5 用户线程和daemon线程 363

19.2.6 Timer线程 364

19.2.7 基于原语锁的简单同步 364

19.2.8 基于条件变量的同步和通信 366

19.2.9 基于queue模块中队列的同步 368

19.2.10 基于Event的同步和通信 369

19.3 基于进程的并行计算 370

19.3.1 multiprocessing模块概述 370

19.3.2 创建和使用进程 370

19.3.3 进程的数据共享 371

19.3.4 进程池 372

19.4 基于线程池/进程池的并发和并行任务 374

19.4.1 concurrent.futures模块概述 374

19.4.2 使用ThreadPoolExecutor并发执行任务 374

19.4.3 使用ProcessPoolExecutor并发执行任务 375

19.5 基于asyncio的异步IO编程 376

19.5.1 asyncio模块概述 376

19.5.2 创建协程对象 376

19.5.3 创建任务对象 377

19.6 应用举例 378

19.6.1 使用Pool并行计算查找素数 378

19.6.2 使用ProcessPoolExecutor并行判断素数 379

19.6.3 使用ThreadPoolExecutor多线程爬取网页 379

19.7 复习题 381

19.8 上机实践 381

19.9 案例研究:文本统计并行处理 381

第20章 系统管理 382

20.1 系统管理相关模块 382

20.2 目录、文件和磁盘的基本操作 382

20.2.1 创建目录 382

20.2.2 临时目录和文件的创建 382

20.2.3 切换和获取当前工作目录 383

20.2.4 目录内容列表 383

20.2.5 文件通配符和glob.glob()函数 383

20.2.6 遍历目录和os.walk()函数 383

20.2.7 判断文件/目录是否存在 384

20.2.8 测试文件类型 384

20.2.9 文件的日期及大小 384

20.2.10 文件和目录的删除 385

20.2.11 文件和目录的复制、重命名和移动 385

20.2.12 磁盘的基本操作 385

20.3 执行操作系统命令和运行其他程序 386

20.3.1 os.system()函数 386

20.3.2 os.popen()函数 386

20.3.3 subprocess模块 386

20.4 获取终端的大小 387

20.5 文件的压缩和解压缩 388

20.5.1 shutil模块支持的压缩和解压缩格式 388

20.5.2 make_archive()函数和文件压缩 388

20.5.3 unpack_archive()函数和文件解压缩 388

20.6 configparser模块和配置文件 389

20.6.1 INI文件及INI文件格式 389

20.6.2 ConfigParser对象和INI文件操作 389

20.7 应用举例 390

20.7.1 病毒扫描 390

20.7.2 文件目录树 391

20.8 复习题 392

20.9 上机实践 393

20.10 案例研究:简易图形用户界面压缩软件 393

参考文献 394

查看更多关于的内容

本类热门
在线购买PDF电子书
下载此书RAR压缩包