Python作为一种解释型的编程语言,具有简单、优雅的设计风格和功能强大的扩展库,非常适合海量数据的处理,已成为各行业大数据技术革新的基础性工具。本书系统讲解Python的基础知识和程序设计方法,全书共15章。第1~8章为基础篇,介绍程序设计的基本控制结构,以列表、元组、字典、集合为代表的各类数据结构,函数、字符串与正则表达式的使用方法,面向对象方法、文件及异常处理等基础知识;第9~15章为进阶篇,介绍类的成员访问方法、迭代器与生成器,采用wxPython的GUI编程方法及NumPy、SciPy、Matplotlib、Pandas的科学计算与可视化方法,同时采用进程、线程、协程实现并发处理,利用DBAPI、ORM对象关系映射实现数据库编程。此外,网络程序设计部分主要介绍网络爬虫、Web应用开发,大数据处理部分介绍函数式编程与MapReduce模型。
本书涵盖Python程序设计的基本原理、基础知识并提供丰富的程序设计案例,信息量大、知识点紧凑、实用性强。全书的编写围绕大数据的时代特征,紧扣Python编程理论和技术发展趋势,可作为高等院校各专业的Python语言教材,也可作为Python应用开发人员及编程爱好者的参考资料。
Python是一门拥有简洁语法和高效信息处理能力的解释型高级编程语言,采取免费、开源的方式进行维护和管理,除拥有大量功能强大的内置对象、标准库、扩展库之外,还允许各行各业的科技人员结合本领域的需要进行专门的设计和扩充,从而极大地提高了Python语言本身的活力和适用范围。对于大数据系统这样涵盖内容丰富、数据容量巨大又需要广泛算法支撑的业务和应用系统,Python语言的使用具有得天独厚的优势,可以方便地进行编程并使用其各类相关的功能模块,提高数据分析处理的能力。
Python语言的设置充分融入了现代高级编程语言的精髓,可以通过简单的语句实现以往需要编写大量代码才能够实现的功能。对于常用的数据结构、函数、字符串和正则表达式、面向对象方法、文件操作以及异常处理等基础性程序设计方法和用法均支持。本书侧重于从基础性原理和方法出发,循序渐进、由浅入深地引导学习者进行Python语言知识与编程方法的学习,并在学习基本编程方法的基础之上,进一步学习类的成员访问方法、迭代器和生成器等知识,进而学习GUI编程方法、科学计算与可视化方法、并发编程的相关知识与原理、数据库编程、网络程序设计以及大数据处理方法。
·本书的内容组织
本书共15章,分基础篇和进阶篇两个部分。第1~8章为基础篇,主要内容包括Python语言概述,程序设计基础,序列结构,函数,字符串与正则表达式,面向对象程序设计,文件操作,异常处理与程序调试;第9~15章为进阶篇,主要内容包括成员访问、迭代器与生成器,GUI编程,科学计算与可视化,并发编程,数据库编程,网络程序设计,大数据处理。
本书主要有以下几个特点:
(1) 涵盖Python程序设计的基本原理、基础知识并提供丰富的程序设计案例,信息量大、知识点紧凑、实用性强。
(2) 围绕大数据的时代特征,紧扣Python编程理论和技术发展趋势,对知识脉络的设计符合国际国内对高质量Python程序设计人员的需要。
(3) 注重对核心技术及基础性原理与方法的讲解,让学习者能够举一反三,深入了解现代程序设计的精髓与先进理念,更有利于对实际问题的领会和解决。
(4) 本书给出了丰富的案例和练习实例,有利于学习者对知识的理解和深入领会,能够辅助学习者掌握关键知识点。
·本书的读者对象
本书适用于相关专业的本科生或研究生,供各类大专院校和职业技术学院作为教材或教学参考书使用,也可作为相关培训课程的教学资料;本书也可供相关软件开发及科技人员作为辅助学习资料与工作参考材料使用,对有兴趣学习Python编程技术的人员或各类相关程序设计竞赛参赛人员也具有一定的参考价值。
采用本书作为教材时,学时安排参考如下:
(1) 本书作为计算机、数据工程、信息技术、电子、自动化、人工智能、大数据等相关专业本科或研究生的程序设计教材时,建议采用64或72学时,讲授本书的全部章节,也可结合专业特点及学时安排,选取第1~9章作为必讲章节,第10~15章作为选讲章节。
(2) 本书作为会计、经济、金融、管理、统计以及其他非工科专业的研究生或本科生教材时,建议采用64学时,选取第1~9章作为必讲章节,第10~15章作为选讲章节。
(3) 作为非计算机相关专业的本科生公共基础课程序设计教材时,建议采用48或64学时,选取第1~8章作为必讲章节,第9~15章作为选讲章节。
(4) 作为专科院校或职业技术学院程序设计教材时,建议采用64或96学时,可结合专业特点及学时安排讲授本书的全部章节,或选取第1~8章作为必讲章节,第9~15章作为选讲章节。
(5) 作为Python培训用书时,建议培训时间为7~12天,可结合培训学时安排讲授本书的全部章节,或选取第1~8章作为必讲章节,第9~15章作为选讲章节。
·本书的配套资源
本书配备多媒体教学资料,相关例题和一些必要资料可以直接通过书中二维码扫码查询。为方便教学,本书提供全套教学课件、全书例题的源代码、参考教学大纲、学时分配表以及试题样卷等资料,可向西安电子科技大学出版社索取,或在其官网(http://www.xduph.com)自行查询。本书也开放了课后习题的参考答案,有需要的老师请直接联系西安电子科技大学出版社获取。
本书被认定为高等学校新工科应用型人才培养“十三五”规划教材和浙江省普通高等学校新形态教材,出版过程中得到了宁波工程学院、浙江大学等院校师生和西安电子科技大学出版社、浙江大学出版社的鼎力支持和帮助,在此表示衷心的感谢。由于编者水平有限,书中难免有错漏之处,恳请广大读者不吝指出并提出宝贵意见,我们将在今后再版时修订完善。
第一部分 基 础 篇
第1章 Python语言概述 2
1.1 大数据的时代特征 2
1.2 Python语言的发展 3
1.2.1 版本更迭 3
1.2.2 软件实现 4
1.3 Python开发环境配置 5
1.3.1 Python的安装和运行 5
1.3.2 Anaconda包管理器的使用 7
1.4 初识Python开发 9
1.4.1 算术运算符 9
1.4.2 数字类型 9
1.4.3 变量的创建与删除 11
1.4.4 第一个程序 12
本章小结 13
习题 13
第2章 程序设计基础 15
2.1 基本运算 15
2.1.1 数字计算 15
2.1.2 字符串规则 16
2.1.3 布尔运算 17
2.2 基本语句 18
2.2.1 标识符与关键字 18
2.2.2 变量 19
2.2.3 表达式和语句 20
2.2.4 输入与输出 21
2.2.5 赋值语句 24
2.3 选择结构 25
2.3.1 单分支选择结构 26
2.3.2 双分支选择结构 26
2.3.3 多分支选择结构 27
2.3.4 选择结构应用 28
2.4 循环结构 29
2.4.1 while循环 29
2.4.2 for循环 30
2.4.3 break和continue语句 30
本章小结 31
习题 31
第3章 序列结构 33
3.1 列表 33
3.1.1 创建列表 33
3.1.2 列表元素操作 34
3.2 元组 37
3.2.1 元组的创建与删除 37
3.2.2 元组与列表的区别 37
3.3 字典 38
3.3.1 创建字典 38
3.3.2 字典元素操作 39
3.4 集合 40
3.4.1 创建集合 40
3.4.2 集合运算 41
3.5 序列运算 43
3.5.1 序列解包 43
3.5.2 元素访问与成员判定 47
3.5.3 序列切片 49
3.5.4 序列排序 50
3.5.5 序列的基本运算 51
3.6 其他序列类型 52
3.6.1 具名元组 52
3.6.2 双向队列 53
本章小结 53
习题 54
第4章 函数 55
4.1 函数定义与调用 55
4.2 函数参数 56
4.2.1 形参与实参 56
4.2.2 参数的默认值 58
4.2.3 关键字参数 59
4.2.4 可变参数与序列解包 60
4.3 函数返回值 61
4.4 变量的作用域 62
4.4.1 局部变量与全局变量 62
4.4.2 模块导入变量 63
4.5 lambda表达式 64
4.5.1 基本用法 64
4.5.2 对序列结构的处理 65
4.5.3 与map()函数的混合使用 66
4.6 递归函数 67
本章小结 67
习题 68
第5章 字符串与正则表达式 69
5.1 字符串 69
5.1.1 字符串的格式化 70
5.1.2 字符串的常用方法 71
5.2 正则表达式 75
5.2.1 正则表达式语法 75
5.2.2 re模块方法的使用 77
5.2.3 正则表达式对象 79
本章小结 81
习题 81
第6章 面向对象程序设计 83
6.1 类与对象 83
6.1.1 创建类和对象 83
6.1.2 构造方法 84
6.1.3 实例成员 84
6.2 封装 86
6.2.1 类的数据成员 86
6.2.2 类的方法成员 87
6.2.3 访问控制 88
6.2.4 属性 90
6.2.5 动态成员绑定 92
6.3 继承和多态 93
6.3.1 继承 94
6.3.2 多态 96
6.4 特殊方法与运算符重载 97
6.4.1 常用特殊方法 97
6.4.2 运算符重载 98
本章小结 100
习题 101
第7章 文件操作 102
7.1 文件基本操作 102
7.1.1 文件对象 102
7.1.2 文件读写 103
7.2 二进制文件 105
7.2.1 读写二进制数据 106
7.2.2 对象的序列化 106
7.2.3 字节型数据的处理 107
7.3 文件系统操作 110
7.3.1 os与os.path模块 110
7.3.2 shutil模块 113
7.4 读写常见文件格式 113
7.4.1 CSV文件 114
7.4.2 Excel文件 115
7.4.3 Word文件 117
7.4.4 JSON文件 119
本章小结 121
习题 122
第8章 异常处理与程序调试 123
8.1 异常的概念 123
8.2 异常捕获 125
8.2.1 捕获指定异常 125
8.2.2 没有出现指定异常的处理 126
8.2.3 捕获多个异常 127
8.2.4 带有finally的异常处理 128
8.3 自定义异常 128
8.3.1 主动抛出异常 129
8.3.2 自定义异常 130
8.4 断言与上下文管理 131
8.4.1 断言 131
8.4.2 上下文管理 132
8.5 程序调试 132
8.5.1 使用IDLE调试代码 132
8.5.2 使用pdb调试代码 133
本章小结 135
习题 136
第二部分 进 阶 篇
第9章 成员访问、迭代器与生成器 138
9.1 成员访问 138
9.1.1 基本的序列和映射规则 138
9.1.2 子类化内置类型 140
9.2 迭代器 141
9.2.1 可迭代对象 141
9.2.2 迭代器规则 142
9.2.3 创建迭代器 143
9.2.4 从迭代器得到序列 144
9.3 生成器 145
9.3.1 生成器函数 145
9.3.2 反向迭代器 146
9.3.3 推导式 147
9.3.4 生成器表达式 149
9.3.5 生成器方法 150
9.3.6 生成器的嵌套 151
9.4 内置的可迭代对象 152
9.4.1 map映射迭代器 152
9.4.2 filter过滤迭代器 154
9.4.3 zip组合迭代器 155
9.4.4 enumerate枚举迭代器 156
本章小结 156
习题 157
第10章 GUI编程 159
10.1 GUI程序的基本框架 159
10.1.1 创建GUI窗口 159
10.1.2 窗体设计 160
10.2 事件与事件驱动 162
10.2.1 事件及其分类 162
10.2.2 窗体的基本元素 163
10.2.3 事件的捕获与绑定 164
10.2.4 事件驱动编程 166
10.3 窗口布局 170
10.3.1 静态布局 170
10.3.2 线性布局 175
10.3.3 网格布局 180
10.3.4 灵活网格布局 180
10.3.5 网格包布局 184
本章小结 187
习题 187
第11章 科学计算与可视化 190
11.1 数组与矩阵运算 190
11.1.1 列表、数组和矩阵 190
11.1.2 数组与标量的算术运算 193
11.1.3 数组与数组的运算 194
11.1.4 数组的切片与索引 199
11.1.5 数组的函数运算 201
11.2 科学计算 204
11.3 数据图表 208
11.3.1 画布与坐标系 208
11.3.2 线形图 210
11.3.3 散点图 211
11.3.4 条形图 212
11.3.5 直方图 214
11.3.6 饼图 216
11.4 数据分析 217
11.4.1 标签化的一维数组 217
11.4.2 时间序列 219
11.4.3 数据表格 220
11.4.4 轴向运算 226
11.4.5 分组运算 228
11.5 统计分析 230
本章小结 232
习题 232
第12章 并发编程 234
12.1 进程 234
12.1.1 进程的执行 234
12.1.2 进程同步 236
12.1.3 进程间的数据交换 238
12.2 线程 242
12.2.1 创建线程 242
12.2.2 线程同步 243
12.3 协程 247
12.3.1 概念的引入 247
12.3.2 生成器协程 249
12.3.3 异步处理协程 253
本章小结 258
习题 259
第13章 数据库编程 261
13.1 关系数据库访问 261
13.1.1 数据库连接 261
13.1.2 游标的使用 262
13.1.3 行对象 264
13.2 对象关系映射 264
13.2.1 数据库引擎 265
13.2.2 数据库的映射与绑定 266
本章小结 269
习题 269
第14章 网络程序设计 270
14.1 网络架构与协议 270
14.1.1 网络互联模型 270
14.1.2 UDP编程 271
14.1.3 TCP编程 272
14.2 网页内容读取 274
14.2.1 HTTP与HTML 274
14.2.2 采用urllib获取网络数据 276
14.3 Web应用开发 281
14.3.1 Web服务器网关接口 281
14.3.2 Flask应用框架 285
本章小结 288
习题 289
第15章 大数据处理 290
15.1 函数式编程 290
15.1.1 函数式编程思想 290
15.1.2 高阶函数 291
15.1.3 返回函数 294
15.1.4 装饰器 297
15.1.5 偏函数 302
15.2 Hadoop的MapReduce模型 304
15.2.1 Hadoop的流式数据处理 304
15.2.2 MapReduce编程案例 305
本章小结 312
习题 312
参考文献 314