这是一本基于Python3的Python快速入门书.6编写。这本书分为四个部分第一部分阐述了Python的基础知识,并对Python进行了概述;第二部分介绍Python编程的要点,涉及列表、元组、集合、字符串、字典、流程控制、函数、模块和作用域、文件系统、异常等内容;第三部分解释Python的高级特性,涉及类和面向对象、正则表达式、数据类型即对象、包、Python库等等;第四部分侧重于数据处理,涉及数据文件的处理、网络数据、数据保存和数据探索最后给出了相关案例。
本书框架清晰,内容安排合理,讲解循序渐进,并有大量的示例和练习,让读者快速学习和掌握Python,不仅适合Python初学者,也是专业程序员的简明Python参考书。
目录
- 第一部分 开始篇
- 第1章 关于Python 3
- 1.1 用Python的理由 3
- 1.2 Python的长处 3
- 1.2.1 Python易于使用 4
- 1.2.2 Python富有表现力 4
- 1.2.3 Python可读性好 5
- 1.2.4 Python功能齐备 5
- 1.2.5 Python跨平台 6
- 1.2.6 Python免费 6
- 1.3 Python的短板 6
- 1.3.1 Python不是速度最快的语言 7
- 1.3.2 Python的库不算最多 7
- 1.3.3 Python在编译时不检查变量类型 7
- 1.3.4 Python对移动应用的支持不足 8
- 1.3.5 Python对多处理器的利用不充分 8
- 1.4 学Python 3的理由 8
- 1.5 小结 9
- 第2章 入门 10
- 2.1 Python的安装 10
- 2.2 基础交互模式和IDLE 12
- 2.2.1 基础交互模式 12
- 2.2.2 IDLE集成开发环境 13
- 2.2.3 基础交互模式和IDLE的适用场景 13
- 2.3 使用IDLE的Python shell窗口 13
- 2.4 第一个程序“Hello, world" 14
- 2.5 利用交互式提示符探索Python 15
- 2.6 小结 16
- 第3章 Python概述 17
- 3.1 Python简介 17
- 3.2 内置数据类型 18
- 3.2.1 数值 18
- 3.2.2 列表 20
- 3.2.3 元组 21
- 3.2.4 字符串 22
- 3.2.5 字典 23
- 3.2.6 集合 23
- 3.2.7 文件对象 23
- 3.3 流程控制语句结构 24
- 3.3.1 布尔值和表达式 24
- 3.3.2 if-elif-else语句 25
- 3.3.3 while循环 25
- 3.3.4 for循环 25
- 3.3.5 函数定义 26
- 3.3.6 异常 27
- 3.3.7 用关键字with控制上下文 27
- 3.4 创建模块 28
- 3.5 面向对象编程 29
- 3.6 小结 31
- 第二部分 重点内容
- 第4章 基础知识 35
- 4.1 缩进和代码块构建 35
- 4.2 识别注释 36
- 4.3 变量和赋值 37
- 4.4 表达式 38
- 4.5 字符串 39
- 4.6 数值 40
- 4.6.1 内置数值处理函数 41
- 4.6.2 高级数值处理函数 41
- 4.6.3 数值计算 41
- 4.6.4 复数 41
- 4.6.5 高级复数函数 42
- 4.7 None值 43
- 4.8 获取用户输入 43
- 4.9 内置操作符 44
- 4.10 基本的Python编码风格 44
- 4.11 小结 45
- 第5章 列表、元组和集合 46
- 5.1 列表类似于数组 46
- 5.2 列表的索引机制 47
- 5.3 修改列表 49
- 5.4 对列表排序 51
- 5.4.1 自定义排序 52
- 5.4.2 sorted()函数 53
- 5.5 其他常用的列表操作 53
- 5.5.1 用in操作符判断列表成员 53
- 5.5.2 用+操作符拼接列表 54
- 5.5.3 用*操作符初始化列表 54
- 5.5.4 用min和max方法求列表的最小值和最大值 54
- 5.5.5 用index方法搜索列表 54
- 5.5.6 用count方法对匹配项计数 55
- 5.5.7 列表操作小结 55
- 5.6 嵌套列表和深复制 56
- 5.7 元组 58
- 5.7.1 元组的基础知识 59
- 5.7.2 单个元素的元组应加上逗号 60
- 5.7.3 元组的打包和拆包 60
- 5.7.4 列表和元组的相互转换 61
- 5.8 集合 62
- 5.8.1 集合的操作 62
- 5.8.2 不可变集合 63
- 5.9 小结 64
- 第6章 字符串 65
- 6.1 将字符串理解为字符序列 65
- 6.2 基本的字符串操作 66
- 6.3 特殊字符和转义序列 66
- 6.3.1 基本的转义序列 66
- 6.3.2 数字格式(八进制、十六进制)和Unicode编码的转义序列 67
- 6.3.3 对带特殊字符的字符串打印和求值的差异 68
- 6.4 字符串方法 68
- 6.4.1 字符串的split和join方法 69
- 6.4.2 将字符串转换为数值 70
- 6.4.3 去除多余的空白符 71
- 6.4.4 字符串搜索 72
- 6.4.5 字符串修改 74
- 6.4.6 利用列表修改字符串 75
- 6.4.7 其他有用的字符串方法和常量 75
- 6.5 将对象转换为字符串 77
- 6.6 使用format方法 78
- 6.6.1 format方法和位置参数 78
- 6.6.2 format方法和命名参数 78
- 6.6.3 格式描述符 79
- 6.7 用%格式化字符串 79
- 6.7.1 使用格式化序列 80
- 6.7.2 命名参数和格式化序列 81
- 6.8 字符串内插 82
- 6.9 bytes对象 82
- 6.10 小结 84
- 第7章 字典 85
- 7.1 何为字典 85
- 7.2 字典的其他操作 87
- 7.3 单词计数 90
- 7.4 可用作字典键的对象 90
- 7.5 稀疏矩阵 91
- 7.6 将字典用作缓存 92
- 7.7 字典的效率 93
- 7.8 小结 93
- 第8章 流程控制 94
- 8.1 while循环 94
- 8.2 if-elif-else语句 95
- 8.3 for循环 96
- 8.3.1 range函数 97
- 8.3.2 用初值和步进值控制range函数 97
- 8.3.3 在for循环中使用break和
- continue语句 98
- 8.3.4 for循环和元组拆包 98
- 8.3.5 enumerate函数 98
- 8.3.6 zip函数 99
- 8.4 列表和字典推导式 99
- 8.5 语句、代码块和缩进 101
- 8.6 布尔值和布尔表达式 103
- 8.6.1 大多数Python对象都能用作布尔类型 104
- 8.6.2 比较操作符和布尔操作符 104
- 8.7 编写简单的文本文件分析程序 105
- 8.8 小结 106
- 第9章 函数 107
- 9.1 基本的函数定义 107
- 9.2 多种函数参数 108
- 9.2.1 按位置给出形参 108
- 9.2.2 按形参名称传递实参 109
- 9.2.3 变长实参 110
- 9.2.4 多种参数传递方式的混用 111
- 9.3 将可变对象用作函数实参 111
- 9.4 局部变量、非局部变量和全局变量 113
- 9.5 将函数赋给变量 115
- 9.6 lambda表达式 115
- 9.7 生成器函数 116
- 9.8 装饰器 117
- 9.9 小结 118
- 第10章 模块和作用域规则 120
- 10.1 何为模块 120
- 10.2 编写第一个模块 121
- 10.3 import语句 123
- 10.4 模块搜索路径 124
- 10.5 模块内部私有名称 126
- 10.6 库和第三方模块 127
- 10.7 Python作用域规则和命名空间 127
- 10.8 小结 133
- 第11章 Python程序 134
- 11.1 创建一个很简单的程序 134
- 11.1.1 从命令行启动脚本 135
- 11.1.2 命令行参数 135
- 11.1.3 脚本输入/输出的重定
- 向 136
- 11.1.4 argparse模块 137
- 11.1.5 fileinput模块的使用 138
- 11.2 让脚本在UNIX下直接运行 140
- 11.3 macOS系统中的脚本 140
- 11.4 Windows中多种脚本执行方式 140
- 11.4.1 从命令窗口或PowerShell中启动脚本 141
- 11.4.2 Windows中的其他运行方式 141
- 11.5 程序和模块 141
- 11.6 发布Python应用程序 146
- 11.6.1 wheel包 146
- 11.6.2 zipapp和pex 146
- 11.6.3 py2exe和py2app 147
- 11.6.4 用freeze创建可执行程序 147
- 11.7 小结 147
- 第12章 文件系统的使用 149
- 12.1 os、os.path和pathlib的对比 149
- 12.2 路径和路径名 150
- 12.2.1 绝对路径和相对路径 150
- 12.2.2 当前工作目录 151
- 12.2.3 用pathlib模块访问目录 152
- 12.2.4 路径名的处理 152
- 12.2.5 用pathlib处理路径名 154
- 12.2.6 常用变量和函数 155
- 12.3 获取文件信息 156
- 12.4 文件系统的其他操作 158
- 12.5 处理目录树下的所有文件 161
- 12.6 小结 162
- 第13章 文件的读写 165
- 13.1 打开文件及file对象 165
- 13.2 关闭文件 166
- 13.3 以写入等模式打开文件 166
- 13.4 读写文本及二进制数据的函数 167
- 13.5 用pathlib读写文件 169
- 13.6 屏幕输入/输出及重定向 169
- 13.7 用struct模块读取结构化的二进制数据 172
- 13.8 用pickle将对象存入文件 173
- 13.9 用shelve保存对象 176
- 13.10 小结 178
- 第14章 异常 179
- 14.1 异常简介 179
- 14.1.1 错误和异常处理的一般原则 179
- 14.1.2 异常较为正式的定义 182
- 14.1.3 多种异常的处理 182
- 14.2 Python中的异常 182
- 14.2.1 Python异常的类型 183
- 14.2.2 引发异常 185
- 14.2.3 捕获并处理异常 185
- 14.2.4 自定义新的异常 187
- 14.2.5 用assert语句调试程序 188
- 14.2.6 异常的继承架构 188
- 14.2.7 示例:用Python编写的磁盘写入程序 189
- 14.2.8 示例:正常计算过程中的异常 189
- 14.2.9 异常的适用场合 190
- 14.3 用到with关键字的上下文管理器 191
- 14.4 小结 192
- 第三部分 高级特性
- 第15章 类和面向对象编程 195
- 15.1 定义类 195
- 15.2 实例变量 196
- 15.3 方法 197
- 15.4 类变量 199
- 15.5 静态方法和类方法 201
- 15.5.1 静态方法 201
- 15.5.2 类方法 202
- 15.6 继承 203
- 15.7 类及实例变量的继承 205
- 15.8 概括:Python类的基础知识 206
- 15.9 私有变量和私有方法 208
- 15.10 用@property获得更为灵活的实例变量 209
- 15.11 类实例的作用域规则和命名空间 210
- 15.12 析构函数和内存管理 214
- 15.13 多重继承 214
- 15.14 小结 216
- 第16章 正则表达式 218
- 16.1 何为正则表达式 218
- 16.2 带特殊字符的正则表达式 219
- 16.3 正则表达式和原始字符串 220
- 16.4 从字符串提取出匹配文本 221
- 16.5 用正则表达式替换文本 224
- 16.6 小结 226
- 第17章 数据类型即对象 227
- 17.1 类型即对象 227
- 17.2 类型的使用 228
- 17.3 类型和用户自定义类 228
- 17.4 鸭子类型 230
- 17.5 何为特殊方法属性 231
- 17.6 让对象像列表一样工作 232
- 17.7 特殊方法属性__getitem__ 232
- 17.7.1 工作原理 233
- 17.7.2 实现完整的列表功能 234
- 17.8 完整实现列表功能的对象 235
- 17.9 由内置类型派生子类 237
- 17.9.1 由列表类型派生子类 237
- 17.9.2 由UserList派生子类 238
- 17.10 特殊方法属性的适用场景 239
- 17.11 小结 239
- 第18章 包 240
- 18.1 何为包 240
- 18.2 包的第一个示例 240
- 18.3 包的实际例子 242
- 18.3.1 包内的__init__.py文件 243
- 18.3.2 mathproj包的基本用法 243
- 18.3.3 子包和子模块的加载 244
- 18.3.4 包内的import语句 245
- 18.4 __all__属性 246
- 18.5 包的合理使用 246
- 18.6 小结 247
- 第19章 Python库的使用 248
- 19.1 "功能齐备"的标准
- 库 248
- 19.1.1 各种数据类型的
- 管理 248
- 19.1.2 文件和存储操作 250
- 19.1.3 操作系统服务的访问 251
- 19.1.4 互联网协议及其数据格式的使用 251
- 19.1.5 开发调试工具及运行时服务 252
- 19.2 标准库之外的库 253
- 19.3 添加其他Python库 253
- 19.4 通过pip和venv安装Python库 253
- 19.4.1 带--user标志的安装 254
- 19.4.2 虚拟环境 254
- 19.5 PyPI(即“奶酪商店”) 255
- 19.6 小结 255
- 第四部分 数据处理
- 第20章 简单的文件问题 259
- 20.1 问题:没完没了的数据文件流 259
- 20.2 场景:无穷无尽的产品源数据 259
- 20.3 引入更多目录结构 261
- 20.4 节省存储空间:压缩和整理 263
- 20.4.1 文件压缩 263
- 20.4.2 文件清理 264
- 20.5 小结 265
- 第21章 数据文件的处理 266
- 21.1 ETL简介 266
- 21.2 文本文件的读取 267
- 21.2.1 文本编码:ASCII、
- Unicode等 267
- 21.2.2 非结构化文本 268
- 21.2.3 带分隔符的普通文本文件 270
- 21.2.4 csv模块 271
- 21.2.5 读取csv文件并存为字典的列表 274
- 21.3 Excel文件 275
- 21.4 数据清洗 276
- 21.4.1 清洗 276
- 21.4.2 排序 277
- 21.4.3 数据清洗时的问题和陷阱 278
- 21.5 数据文件的写入 279
- 21.5.1 CSV和其他带分隔符的文件 279
- 21.5.2 Excel文件的写入 280
- 21.5.3 数据文件打包 280
- 21.6 小结 281
- 第22章 网络数据 282
- 22.1 获取文件 282
- 22.1.1 用Python从FTP服务器获取文件 283
- 22.1.2 通过SFTP协议获取文件 284
- 22.1.3 通过HTTP/HTTPS协议获取文件 284
- 22.2 通过API获取数据 285
- 22.3 结构化数据格式 287
- 22.3.1 JSON数据 287
- 22.3.2 XML数据 291
- 22.4 抓取Web数据 295
- 22.5 小结 299
- 第23章 数据的保存 300
- 23.1 关系数据库 300
- 23.2 SQLite:sqlite3数据库的用法 301
- 23.3 MySQL、PostgreSQL和其他关系数据库的使用 303
- 23.4 利用ORM简化数据库操作 303
- 23.4.1 SQLAlchemy 304
- 23.4.2 用Alembic修改数据库结构 307
- 23.5 NoSQL数据库 310
- 23.6 用Redis实现键/值存储 310
- 23.7 MongoDB中的文档 313
- 23.8 小结 315
- 第24章 数据探索 316
- 24.1 Python的数据探索工具 316
- 24.1.1 Python用于数据探索的优势 316
- 24.1.2 Python能比电子表格做得更好 317
- 24.2 Jupyter记事本 317
- 24.2.1 启动内核 318
- 24.2.2 执行单元格中的代码 318
- 24.3 Python和pandas 319
- 24.3.1 为什么要选用
- pandas 319
- 24.3.2 pandas的安装 320
- 24.3.3 Data Frame 320
- 24.4 数据清洗 322
- 24.4.1 用pandas加载并保存数据 322
- 24.4.2 用Data Frame进行数据清洗 324
- 24.5 数据聚合和处理 326
- 24.5.1 Data Frame的合并 326
- 24.5.2 数据选取 327
- 24.5.3 分组与聚合 328
- 24.6 数据绘图 329
- 24.7 不用pandas的理由 330
- 24.8 小结 331
- 第25章 案例研究 332
- 25.1 数据的下载 332
- 25.2 解析inventory数据 335
- 25.3 根据经纬度选择一个观测站 336
- 25.4 选择观测站并获取其元数据 338
- 25.5 获取并解析真实的天气数据 341
- 25.5.1 获取数据 341
- 25.5.2 解析天气数据 341
- 25.6 将天气数据存入数据库(可选) 344
- 25.7 选取数据并作图 345
- 25.8 用pandas对数据绘图 346
- 附录A Python文档使用指南 347
- 习题答案(网上下载)