[套装书]Python程序设计(原书第3版)+Python进阶编程:编写更高效、优雅的Python代码(2册)

作者
凯·霍斯特曼 兰斯·尼塞斯 刘宇宙,谢东,刘艳
丛书名
计算机科学丛书
出版社
机械工业出版社
ISBN
9782104211457
简要
简介
内容简介书籍计算机书籍 ---------------------------8080099 - Python程序设计(原书第3版)--------------------------- 本书面向Python初学者,采用模块方式呈现知识要点,而非百科全书式的语法大全。书中介绍了数值、字符串、列表、字典、集合、控制结构、函数、递归、排序、面向对象编程、文件操作等基础知识,通过大量案例来演示这些技术,重视计算思维的培养,由浅入深地将解决问题的完整方案一步步呈现在读者面前。本版新增了面向数据科学的程序示例和练习,扩展了有关字符串和列表的内容,并引入了海龟图形和游戏编程等新的数据包。本书既可作为高等院校计算机专业第 一门程序设计课的教材,也可供Python爱好者自学参考。 ---------------------------8079864 - Python进阶编程:编写更高效、优雅的Python代码--------------------------- 内容简介 本书将帮助读者系统掌握编写高效、优雅的Python代码的方法,快速成长为一位高水平的Python开发工程师。 作者是Python编程领域的资深开发工程师,有多年的Python开发经验,本书得到了行业里15位技术专家的高度评价。 为了帮助读者编写出高效的Python代码,本书不仅从源代码的角度系统地讲解了Python的语法,让读者能知其然并知其所以然,而且结合具体的应用需求,对并发编程、性能优化、测试与调试、异常处理、内存管理等Python开发中的高级知识进行了详细的讲解。 为了指导读者编写出更优雅的Python代码,本书针对具体问题给出了大量的实例代码并给出了编码风格上的方法和建议。 如果你是没有Python编程经验的新人,你将通过本书系统掌握Python语法及其背后的原理,并从一开始就养成良好的编码习惯;如果你是有一定Python编程经验的老手,你将通过本书掌握各种Python编程中的高级知识,同时领略到优雅的编码风格和技巧。
目录
[套装书具体书目]
8079864 - Python进阶编程:编写更高效、优雅的Python代码 - 9787111678502 - 机械工业出版社 - 定价 129
8080099 - Python程序设计(原书第3版) - 9787111678816 - 机械工业出版社 - 定价 169



---------------------------8080099 - Python程序设计(原书第3版)---------------------------


出版者的话
译者序
前言
第1章 导论 1
1.1 计算机程序 1
1.2 计算机组成结构 2
1.3 Python程序设计语言 4
1.4 熟悉程序设计环境 5
1.5 分析我们的第一个程序 9
1.6 错误信息 11
1.7 问题求解:算法设计 12
本章小结 18
复习题 19
编程题 20
第2章 数值和字符串编程 22
2.1 变量 22
2.1.1 定义变量 22
2.1.2 数值类型 24
2.1.3 变量名称 25
2.1.4 常量 25
2.1.5 注释 26
2.2 算术运算 28
2.2.1 基本的算术运算 28
2.2.2 乘幂 28
2.2.3 整除和余数 29
2.2.4 调用函数 30
2.2.5 数学函数 31
2.3 问题求解:先手工演算 35
2.4 字符串 38
2.4.1 字符串类型 38
2.4.2 字符串的拼接和重复 38
2.4.3 数值和字符串之间的相互转换 39
2.4.4 字符串和字符 40
2.4.5 字符串方法 41
2.5 输入和输出 43
2.5.1 用户输入 43
2.5.2 数值输入 44
2.5.3 格式化输出 45
2.6 图形应用:简单绘图 54
2.6.1 创建窗口 54
2.6.2 直线和多边形 55
2.6.3 填充形状和颜色 57
2.6.4 椭圆、圆和文本 59
本章小结 64
复习题 65
编程题 68
第3章 选择结构 76
3.1 if语句 76
3.2 关系运算符 80
3.3 嵌套分支 87
3.4 多分支结构 91
3.5 问题求解:流程图 96
3.6 问题求解:测试用例 99
3.7 布尔变量和运算符 100
3.8 分析字符串 105
3.9 应用案例:输入验证 107
本章小结 120
复习题 121
编程题 127
第4章 循环结构 136
4.1 while语句 136
4.2 问题求解:手工跟踪 142
4.3 应用案例:处理哨兵值 145
4.4 问题求解:故事板 148
4.5 常用循环算法 150
4.5.1 求和和平均数 150
4.5.2 匹配项计数 151
4.5.3 提示输入直到找到匹配项 151
4.5.4 最大值和最小值 151
4.5.5 比较相邻值 152
4.6 for循环 153
4.7 嵌套循环 161
4.8 处理字符串 167
4.8.1 统计匹配项 167
4.8.2 查找所有匹配项 167
4.8.3 找到第一个或者最后一个匹配项 167
4.8.4 验证字符串 168
4.8.5 创建新的字符串 169
4.9 应用案例:随机数和仿真 170
4.9.1 生成随机数 170
4.9.2 模拟掷骰子 171
4.9.3 蒙特卡罗方法 172
4.10 图形应用:数字图像处理 176
4.10.1 过滤图像 176
4.10.2 重新配置图像 179
4.11 问题求解:先易后难 180
本章小结 185
复习题 186
编程题 190
第5章 函数 200
5.1 作为黑盒的函数 200
5.2 实现和测试函数 201
5.2.1 实现函数 201
5.2.2 测试函数 202
5.2.3 包含函数的程序 202
5.3 参数传递 205
5.4 返回值 207
5.5 不带返回值的函数 214
5.6 问题求解:可复用函数 217
5.7 问题求解:逐步求精 218
5.8 变量的作用范围 231
5.9 图形应用:构建图像处理工具包 237
5.9.1 入门 237
5.9.2 比较图像 238
5.9.3 调整图像亮度 238
5.9.4 旋转图像 240
5.9.5 使用工具包 241
5.10 递归函数(可选) 245
本章小结 255
复习题 256
编程题 259
第6章 列表 266
6.1 列表的基本属性 266
6.1.1 创建列表 266
6.1.2 访问列表元素 267
6.1.3 遍历列表 269
6.1.4 列表引用 269
6.2 列表操作 273
6.2.1 附加元素 273
6.2.2 插入元素 273
6.2.3 查找元素 274
6.2.4 删除元素 275
6.2.5 拼接和复制 276
6.2.6 相等性测试 276
6.2.7 求和、最大值、最小值和排序 276
6.2.8 复制列表 277
6.3 常用列表算法 279
6.3.1 填充列表 279
6.3.2 组合列表元素 279
6.3.3 元素分隔符 280
6.3.4 最大值和最小值 280
6.3.5 线性查找 281
6.3.6 收集和统计匹配项 281
6.3.7 删除匹配项 282
6.3.8 交换元素 283
6.3.9 读取输入 284
6.4 将列表与函数一起使用 288
6.5 问题求解:修改算法 295
6.6 问题求解:通过操作实体对象发现算法 300
6.7 表格 304
6.7.1 创建表格 304
6.7.2 访问元素 305
6.7.3 定位相邻元素 305
6.7.4 计算行总计和列总计 306
6.7.5 将表格与函数一起使用 306
本章小结 314
复习题 315
编程题 318
第7章 文件和异常 325
7.1 读取和写入文本文件 325
7.1.1 打开文件 325
7.1.2 读取文件 326
7.1.3 写入文件 327
7.1.4 文件处理示例 327
7.2 文本输入和输出 328
7.2.1 遍历文件中的行 329
7.2.2 读取单词 330
7.2.3 读取字符 332
7.2.4 读取记录 333
7.3 命令行参数 340
7.4 二进制文件和随机访问(可选) 352
7.4.1 读取和写入二进制文件 352
7.4.2 随机访问 353
7.4.3 图像文件 353
7.4.4 处理BMP文件 355
7.5 异常处理 361
7.5.1 引发异常 361
7.5.2 处理异常 362
7.5.3 finally子句 364
7.6 应用案例:处理输入错误 367
本章小结 378
复习题 379
编程题 380
第8章 集合和字典 390
8.1 集合 390
8.1.1 创建和使用集合 390
8.1.2 添加和删除元素 392
8.1.3 子集 393
8.1.4 并集、交集和差集 393
8.2 字典 400
8.2.1 创建字典 401
8.2.2 访问字典的值 401
8.2.3 添加和修改数据项 401
8.2.4 删除数据项 402
8.2.5 遍历字典 403
8.3 复杂的数据结构 409
8.3.1 包含集合的字典 409
8.3.2 包含列表的字典 411
本章小结 420
复习题 421
编程题 423
第9章 对象和类 426
9.1 面向对象的程序设计 426
9.2 实现一个简单的类 427
9.3 指定类的公共接口 430
9.4 设计数据表示 431
9.5 构造函数 432
9.6 实现方法 435
9.7 测试类 438
9.8 问题求解:跟踪对象 445
9.9 问题求解:对象数据的模式 448
9.9.1 使用总计 448
9.9.2 统计事件 449
9.9.3 收集值 449
9.9.4 管理对象的属性 449
9.9.5 使用不同的状态建模对象 450
9.9.6 描述对象的位置 451
9.10 对象引用 451
9.10.1 共享引用 452
9.10.2 None引用 453
9.10.3 self引用 454
9.10.4 对象的生命周期 454
9.11 应用案例:实现一个Fraction类 456
9.11.1 Fraction类的设计 456
9.11.2 构造函数 457
9.11.3 特殊方法 458
9.11.4 算术运算 459
9.11.5 逻辑运算 460
本章小结 467
复习题 468
编程题 469
第10章 继承 475
10.1 继承的层次结构 475
10.2 实现子类 479
10.3 调用超类的构造函数 482
10.4 重写方法 485
10.5 多态 488
10.6 应用案例:几何图形类的层次结构 500
10.6.1 基类 500
10.6.2 基本形状 502
10.6.3 形状组 505
本章小结 514
复习题 514
编程题 515
第11章 递归 520
11.1 三角形数字之再探讨 520
11.2 问题求解:递归思维 523
11.3 递归辅助函数 527
11.4 递归的效率 528
11.5 排列 533
11.6 回溯 536
11.7 相互递归 543
本章小结 550
复习题 550
编程题 551
第12章 排序和查找 556
12.1 选择排序算法 556
12.2 选择排序算法的性能测量 558
12.3 选择排序算法的性能分析 559
12.4 合并排序算法 563
12.5 分析合并排序算法 565
12.6 查找算法 569
12.6.1 线性查找 570
12.6.2 二分查找 571
12.7 问题求解:估计算法的运行时间 573
12.7.1 线性时间 573
12.7.2 二次时间 574
12.7.3 三角形模式 575
12.7.4 对数时间 576
本章小结 581
复习题 581
编程题 584



---------------------------8079864 - Python进阶编程:编写更高效、优雅的Python代码---------------------------


推荐语
推荐序一
推荐序二
前言
第0章 Python总览 1
0.1 Python总体架构 1
0.2 Python源码组织 2
0.3 Python对象初探 3
0.3.1 Python内的对象 3
0.3.2 对象的分类 4
0.3.3 对象机制的基石—PyObject 5
0.3.4 定长对象和变长对象 5
0.3.5 类型对象 6
0.3.6 类型的类型 7
0.3.7 对象的创建 8
0.3.8 对象的行为 8
0.3.9 对象的多态性 9
0.3.10 引用计数 10
0.4 本章小结 11
第1章 数字对象 12
1.1 整数对象 12
1.1.1 PyLongObject对象 12
1.1.2 小整数对象 14
1.1.3 大整数对象 14
1.2 数字格式化输出 14
1.3 进制转换 16
1.4 数字运算 17
1.4.1 四舍五入运算 17
1.4.2 浮点数运算 19
1.4.3 复数运算 20
1.4.4 分数运算 22
1.4.5 大型数组运算 22
1.4.6 矩阵与线性代数运算 25
1.5 字节到大整数的打包与解包 27
1.6 无穷大与NaN 28
1.7 随机数 30
1.8 本章小结 32
第2章 字符串 33
2.1 字符串对象解析 33
2.1.1 字符串对象的intern机制 33
2.1.2 字符串操作效率 34
2.2 字符串操作 35
2.2.1 字符串分割 35
2.2.2 删除不需要的字符 36
2.2.3 字符串清理 37
2.2.4 字符串对齐 39
2.2.5 字符串拼接 40
2.2.6 字符串插入 42
2.2.7 字符串格式化 43
2.2.8 处理HTML和XML文本 43
2.3 字符串匹配 44
2.3.1 字符串开头或结尾匹配 44
2.3.2 用Shell通配符匹配字符串 46
2.3.3 字符串匹配和搜索 47
2.3.4 最短匹配 49
2.3.5 多行匹配 50
2.4 字符串搜索 50
2.4.1 字符串搜索替换 50
2.4.2 字符串忽略大小写的搜索替换 51
2.5 将Unicode文本标准化 52
2.6 在正则表达式中使用Unicode字符 54
2.7 令牌解析 55
2.8 简单的递归下降分析器实现 57
2.9 字节字符串操作 64
2.10 本章小结 66
第3章 数据结构 67
3.1 序列 67
3.1.1 序列对象解析 67
3.1.2 序列解压 68
3.1.3 序列去重并保持顺序 70
3.1.4 序列元素统计 71
3.1.5 过滤序列元素 72
3.1.6 序列元素名称映射 74
3.1.7 转换并计算数据 76
3.2 字典 77
3.2.1 字典对象解析 77
3.2.2 字典映射 79
3.2.3 字典排序 81
3.2.4 字典运算 81
3.2.5 字典查找 83
3.2.6 通过关键字排序字典 84
3.2.7 字典提取 85
3.2.8 字典合并 86
3.3 可迭代对象操作 88
3.3.1 可迭代对象解压 88
3.3.2 保留最后N个元素 89
3.3.3 记录分组 90
3.4 查找最大或最小的N个元素 91
3.5 实现一个优先级队列 92
3.6 命名切片 95
3.7 排序不支持原生比较的对象 96
3.8 本章小结 97
第4章 迭代器与生成器 98
4.1 迭代操作 98
4.1.1 手动遍历迭代器 98
4.1.2 代理迭代 99
4.1.3 实现迭代协议 100
4.1.4 反向迭代 102
4.1.5 迭代器切片 104
4.1.6 跳过可迭代对象的开始部分 104
4.1.7 排列组合的迭代 106
4.1.8 序列上索引值迭代 107
4.1.9 多个序列迭代 109
4.1.10 集合元素的迭代 111
4.1.11 顺序迭代合并后的排序迭代对象 112
4.1.12 迭代器代替while无限循环 113
4.2 使用生成器创建新的迭代模式 113
4.3 带有外部状态的生成器函数 115
4.4 创建数据处理管道 116
4.5 展开嵌套的序列 118
4.6 本章小结 120
第5章 文件与I/O 121
5.1 读/写操作 121
5.1.1 读/写文本数据 121
5.1.2 读/写字节数据 123
5.1.3 读/写压缩文件 124
5.2 文件操作 126
5.2.1 文件的写入 126
5.2.2 操作文件路径名 126
5.2.3 文件检查 127
5.2.4 文件列表获取 128
5.2.5 忽略文件名编码 129
5.2.6 打印不合法的文件名 130
5.2.7 文件编码变更 132
5.2.8 在文本文件中写入字节 133
5.2.9 文件描述符包装 134
5.2.10 创建临时文件和文件夹 135
5.2.11 文件迭代 137
5.2.12 二进制文件映射 137
5.3 使用分隔符或行终止符打印 139
5.4 字符串的I/O操作 140
5.5 可变缓冲区中二进制数据的读取 141
5.6 串行端口的数据通信 143
5.7 对象序列化 143
5.8 本章小结 146
第6章 数据编码及处理 147
6.1 数据读/写 147
6.1.1 CSV数据读/写  147
6.1.2 JSON数据读/写 151
6.1.3 二进制数组数据读/写 155
6.1.4 嵌套和可变长二进制数据读取 158
6.2 XML数据解析 166
6.2.1 简单XML数据解析 166
6.2.2 解析XML文档 167
6.2.3 修改XML 169
6.3 字典转换为XML 170
6.4 与关系型数据库的交互 172
6.5 编码/解码 174
6.5.1 十六进制数编码和解码 174
6.5.2 编码/解码Base64数据 175
6.6 本章小结 176
第7章 函数 177
7.1 函数定义 177
7.1.1 有默认参数的函数定义 177
7.1.2 匿名或内联函数定义 180
7.2 函数的参数 181
7.2.1 接收任意数量参数 181
7.2.2 接收关键字参数 183
7.2.3 为参数增加元信息 184
7.2.4 减少参数个数 185
7.3 返回多个值的函数 187
7.4 变量处理 188
7.4.1 匿名函数捕获变量值 188
7.4.2 访问闭包中定义的变量 190
7.5 类转换为函数 192
7.6 回调函数 193
7.6.1 有额外状态信息的回调函数 193
7.6.2 内联回调函数 196
7.7 本章小结 198
第8章 类与对象 199
8.1 对象处理 199
8.1.1 对象显示 199
8.1.2 有效创建大量对象 200
8.1.3 由字符串调用对象 201
8.2 自定义格式化字符串 202
8.3 上下文管理协议 203
8.4 类的处理 205
8.4.1 封装属性名 205
8.4.2 调用父类方法 207
8.4.3 扩展property 213
8.4.4 创建新的类或实例属性 217
8.4.5 定义多个构造器 219
8.4.6 类中的比较操作 220
8.5 属性处理 222
8.5.1 可管理属性创建 222
8.5.2 延迟计算属性 226
8.5.3 属性的代理访问 229
8.6 数据结构的初始化 233
8.7 接口或者抽象基类定义 236
8.8 数据模型的类型约束 238
8.9 自定义容器 243
8.10 不调用init方法的实例创建 246
8.11 利用Mixin扩展类功能 247
8.12 状态对象实现 249
8.13 设计模式处理 252
8.13.1 访问者模式 252
8.13.2 不用递归实现访问者模式 255
8.14 数据结构的内存管理 259
8.15 创建缓存 262
8.16 本章小结 266
第9章 元编程 267
9.1 装饰器 267
9.1.1 函数添加装饰器 267
9.1.2 装饰器中保留函数元信息 269
9.1.3 解除装饰器 271
9.1.4 带参数的装饰器 272
9.1.5 装饰器自定义属性 273
9.1.6 带可选参数的装饰器 276
9.1.7 函数的类型检查 278
9.1.8 类中定义装饰器 281
9.1.9 装饰器定义为类 282
9.1.10 类和静态方法的装饰器 285
9.1.11 给函数增加参数 287
9.1.12 扩充类的功能 289
9.2 元类 291
9.2.1 控制实例创建 291
9.2.2 元类定义可选参数 293
9.3 类的属性定义顺序 295
9.4 强制参数签名 297
9.5 强制使用编程规约 300
9.6 以编程方式定义类 303
9.7 初始化类的成员 306
9.8 利用注解实现方法重载 307
9.9 避免重复的属性方法 313
9.10 定义上下文管理器 314
9.11 局部变量域中执行代码 316
9.12 Python源码解析 319
9.13 Python字节码拆解 322
9.14 本章小结 324
第10章 模块与包 325
10.1 模块处理 325
10.1.1 模块层级 325
10.1.2 控制模块的导入 326
10.1.3 重新加载模块 327
10.1.4 通过字符串名导入模块 328
10.1.5 远程加载模块 329
10.1.6 导入模块的同时修改模块 346
10.2 读取包中的数据文件 348
10.3 将文件夹加入sys.path 349
10.4 安装私有的包 350
10.5 创建新的Python环境 350
10.6 分发包 352
10.7 本章小结 353
第11章 网络编程 354
11.1 与HTTP服务交互 354
11.2 创建服务器 357
11.2.1 TCP服务器 357
11.2.2 UDP服务器 360
11.3 通过CIDR地址生成对应的IP地址集 361
11.4 REST接口创建 363
11.5 远程调用 367
11.5.1 远程方法调用 367
11.5.2 通过XML-RPC远程调用 371
11.6 不同Python解释器之间的交互 373
11.7 客户端认证 374
11.8 Socket文件描述符传递 376
11.9 事件驱动的I/O 380
11.10 大型数组发送与接收 385
11.11 本章小结 387
第12章 并发编程 388
12.1 线程处理 388
12.1.1 线程的启动与停止 388
12.1.2 线程判断 391
12.1.3 线程间通信 394
12.1.4 线程加锁 398
12.1.5 防止死锁 401
12.1.6 线程状态信息保存 404
12.1.7 创建线程池 405
12.2 并行编程 408
12.3 全局锁问题 412
12.4 Actor任务定义 414
12.5 消息发布/订阅模型 417
12.6 生成器代替线程 420
12.7 线程队列轮询 427
12.8 守护进程 429
12.9 本章小结 432
第13章 脚本编程与系统管理 433
13.1 脚本接收 433
13.2 终止程序 434
13.3 解析命令行选项 434
13.4 弹出密码输入提示 436
13.5 执行外部命令 437
13.6 文件操作 439
13.6.1 文件和的复制或移动 439
13.6.2 创建和解压归档文件 440
13.6.3 文件查找 441
13.6.4 配置文件读取 442
13.7 添加日志 444
13.7.1 脚本增加日志功能 444
13.7.2 函数库增加日志功能 446
13.8 实现计时器 447
13.9 内存和CPU监测 449
13.10 启动Web浏览器 450
13.11 本章小结 451
第14章 测试、调试和异常 452
14.1 测试 452
14.1.1 stdout输出 452
14.1.2 对象打补丁 453
14.1.3 测试异常 455
14.1.4 记录测试结果 457
14.1.5 性能测试 458
14.1.6 测试失败处理 460
14.2 异常处理 461
14.2.1 捕获所有异常 461
14.2.2 处理多个异常 462
14.2.3 自定义异常 464
14.2.4 抛出新的异常 466
14.2.5 异常重新抛出 468
14.2.6 警告信息 468
14.3 程序调试 470
14.4 加速程序运行 472
14.5 实战—自然语言处理 476
14.6 本章小结 502
第15章 Python的内存管理机制 503
15.1 Python内存架构 503
15.2 小块空间的内存池 505
15.2.1 block 505
15.2.2 pool 506
15.2.3 arena 506
15.2.4 内存池 507
15.3 循环引用的垃圾收集 509
15.3.1 引用计数与垃圾收集 509
15.3.2 三色标记模型 510
15.4 Python垃圾收集 511
15.4.1 可收集对象链表 511
15.4.2 分代垃圾收集 513
15.4.3 Python中的标记—清除方法 514
15.5 实战——内存监控 516
15.6 本章小结 520
第16章 性能优化与实践 521
16.1 优化的规则 521
16.1.1 先使程序可以正常工作 521
16.1.2 从用户的角度进行 522
16.1.3 保证代码易读 522
16.2 优化策略 523
16.2.1 寻找其他原因 523
16.2.2 度量硬件 523
16.2.3 编写速度测试代码 523
16.3 查找瓶颈 524
16.3.1 剖析CPU使用情况 524
16.3.2 剖析内存使用情况 528
16.4 降低复杂度 530
16.4.1 测量回路复杂度 530
16.4.2 测量大O记号 530
16.4.3 简化 531
16.5 实战——爬虫程序的性能优化 532
16.6 本章小结 537

推荐

车牌查询
桂ICP备20004708号-3