Python精粹(英文版)
  • 推荐0
  • 收藏0
  • 浏览31

Python精粹(英文版)

【美】大卫·M.比兹利. (作者)  安娜 (责任编辑)

  • 书  号:9787121446023
  • 出版日期:2023-04-01
  • 页  数:336
  • 开  本:16(240*190)
  • 出版状态:上市销售
  • 原书名: Python Distilled
  • 原书号:9780134173276
  • 维护人:符隆美
《Python精粹(英文版)》是一本关于 Python 编程的书。它并未覆盖 Python 的方方面面,其重点是呈现现代且精选的 Python语言核心,即侧重于 Python 编程本身。本书包括抽象实现、程序结构、数据、函数、对象、模块等主题,这些主题能够有效帮助 Python 程序员应对各种项目规模的挑战。同时,本书通常会省略那些完全可以通过IDE 轻松获取的参考内容(例如函数列表、命令名称、参数等),并特意不去描述 Python 编辑器工具、IDE、部署等快速变化的内容及相关问题。
目标读者:本书适合 Python 程序员及相关科技人员、工程师、软件专业人士阅读。
领域畅销名著作者烫手力作+Distilled经典系列再续新篇
大卫·M.比兹利是 Python Essential Reference, Fourth Edition(Addison-Wesley,2010年出版)和 Python Cookbook, Third Edition(OʼReilly,2013 年出版)的作者。他目前在自己的公司 Dabeaz LLC 教授高级计算机科学课程。自 1996 年以来,他一直在使用及教授Python,并进行 Python 方面的写作及演讲
前言
自我撰写 Python Essential Reference 以来,时间已经过去了 20 多年。那时,Python 还是一门非常小众的编程语言,因此第 1 版的 Python Essential Reference 也就只介绍了 Python标准库的一组实用工具,阅读这本书并不费脑。第 1 版反映了那个时代 Python 的实际情况。
这本书本来是一本小书,开发者可以随身携带着它在荒岛或神秘宝库等地方写Python代码。在随后的 3 个版本中,Python Essential Reference 或多或少地演进为一本紧凑而完整的语言参考书,因为如果你打算在整个长假里实践 Python 编程的话,那么你需要把 Python 研究得彻彻底底。
今天,距离上一版 Python Essential Reference 的出版已经过去了 10 多年,Python 生态早已今非昔比。Python 不再是一门小众编程语言,它已经成长为世界上最流行的编程语言之一。Python 程序员可以通过手边的高级编辑器、IDE、笔记本电脑、网页获取丰富的 Python帮助信息。事实上,已经没有太大必要查阅参考书,因为敲下几个键就能获取几乎所有你想要的参考资料。
但是,到处都能搜索信息,Python 的内容又如此之多,这种现实情况带来了不同的挑战。如果你刚开始学习或需要解决一个新问题,那么从何处入手可能会让你不知所措,同时,将各种工具的功能特性跟语言核心本身区别开来也很困难。而解决此类问题正是本书的出发点。
本书是一本关于 Python 编程的书。它并未覆盖 Python 的方方面面,它的重点是呈现现代且精选的 Python 语言核心。长期向科技人员、工程师及软件专业人士教授 Python 的经历,让我认识到这种知识组织方式非常重要。不过,它也是一本关于编写软件库、拓宽Python 应用边界及发掘实效技术的图书。
在大多数情况下,本书侧重于 Python 编程本身。本书包括抽象实现、程序结构、数据、函数、对象、模块等主题,这些主题能够有效帮助 Python 程序员应对各种规模项目的挑战。
而那些可以完全通过 IDE 轻松获取的参考内容(比如函数列表、命令名称、参数等),本书通常会省略。我也特意不去描述 Python 编辑器工具、IDE、部署等快速变化的内容及相关问题。
也许有争议的是,与大型软件项目管理相关的语言特性并非本书重点。Python 有时也用于由数百万行代码组成的大型且重要的项目。此类应用需要专门的工具、设计和功能特性。它们还涉及委员会的设立和各种会议,以及对重大事项做出决定。对于我们这本小书来说,这个要求太高了。但也许最实在的原因是,我并不使用 Python 来编写这样的应用程序——你也不应该这样做,至少别成为一种嗜好。
一本书的编写,对于不断发展的语言特性总有一个节点。本书编写于 Python 3.9 发布时期。因此,它不包括计划在 Python 后续版本中添加的一些主要功能,如结构化模式匹配,这也许是本书后续版本要讲的话题。
最后,但同样重要的是,我认为保持编程兴趣很重要。我希望本书不仅能帮助你成为一名高效的 Python 程序员,而且还能让你获得千载难逢的神奇魔法,从而能够使用 Python来探索星辰,在火星上驾驭直升机,以及在后院用水枪喷射松鼠。
鸣谢
我要感谢技术审校 Shawn Brown、Sophie Tabac 和 Pete Fein 提供了很多有帮助的建议及意见。还要感谢跟我长期合作的编辑 Debra Williams Cauley,感谢她在本书和前几本图书出版过程中所做的工作。许多上过我的课的学生对本书主题的提炼产生了重大的间接影响。最后,但同样很重要的是,我要感谢 Paula、Thomas 和 Lewis 给予我的支持和爱意。

目录

1 Python 基础 .................................................................................. 15
1.1 运行 Python .............................................................................................................. 15
1.2 Python 程序 .............................................................................................................. 16
1.3 基本类型、变量与表达式 ...................................................................................... 17
1.4 算术运算符 .............................................................................................................. 19
1.5 条件与控制流 .......................................................................................................... 21
1.6 文本串 ...................................................................................................................... 23
1.7 文件输入与输出 ...................................................................................................... 26
1.8 列表 .......................................................................................................................... 27
1.9 元组 .......................................................................................................................... 29
1.10 Sets ......................................................................................................................... 31
1.11 字典 ........................................................................................................................ 32
1.12 迭代与循环 ............................................................................................................ 35
1.13 函数 ........................................................................................................................ 36
1.14 异常 ........................................................................................................................ 38
1.15 程序终止 ................................................................................................................ 40
1.16 对象和类 ................................................................................................................ 40
1.17 模块 ........................................................................................................................ 44
1.18 脚本编写 ................................................................................................................ 46
1.19 包 ............................................................................................................................ 47
1.20 构建应用程序 ........................................................................................................ 48
1.21 第三方包管理 ........................................................................................................ 49
1.22 Python 让人感到舒适 ............................................................................................ 50
2 运算符、表达式和数据操作 ................................................................. 51
2.1 字面量 ...................................................................................................................... 51
2.2 表达式与地址 .......................................................................................................... 52
2.3 标准运算符 .............................................................................................................. 53
2.4 就地赋值 .................................................................................................................. 55
2.5 对象比较 .................................................................................................................. 56
2.6 有序比较运算符 ...................................................................................................... 56
2.7 布尔表达式及真值 .................................................................................................. 57
2.8 条件表达式 .............................................................................................................. 58
2.9 迭代操作 .................................................................................................................. 59
2.10 序列操作 ................................................................................................................ 61
2.11 可变序列操作 ........................................................................................................ 63
2.12 Set 操作 .................................................................................................................. 64
2.13 映射操作 ................................................................................................................ 65
2.14 列表、Set 与字典解析式 ...................................................................................... 66
2.15 生成器表达式 ........................................................................................................ 68
2.16 特性(.)运算符 ................................................................................................... 70
2.17 函数调用()运算符 ................................................................................................. 70
2.18 求值顺序 ................................................................................................................ 70
2.19 最后的话:数据的秘密 ........................................................................................ 72
3 程序结构与控制流 ............................................................................ 73
3.1 程序结构与执行 ...................................................................................................... 73
3.2 条件执行 .................................................................................................................. 73
3.3 循环与迭代 .............................................................................................................. 74
3.4 异常 .......................................................................................................................... 78
3.4.1 异常层次 ..................................................................................................... 81
3.4.2 异常与控制流 ............................................................................................. 82
3.4.3 定义新异常 ................................................................................................. 83
3.4.4 链式异常 ..................................................................................................... 84
3.4.5 异常回溯 ..................................................................................................... 87
3.4.6 异常处理建议 ............................................................................................. 87
3.5 上下文管理器和 with 语句 ..................................................................................... 89
3.6 断言和__debug__ .................................................................................................... 91
3.7 最后的话 .................................................................................................................. 92
4 对象、类型和协议 ............................................................................ 93
4.1 核心概念 .................................................................................................................. 93
4.2 对象标识与类型 ...................................................................................................... 94
4.3 引用计数与垃圾回收 .............................................................................................. 95
4.4 引用与复制 .............................................................................................................. 97
4.5 对象的表示与打印 .................................................................................................. 98
4.6 头等对象 .................................................................................................................. 99
4.7 对可选的或缺失的数据使用 None ....................................................................... 101
4.8 对象协议及数据抽象 ............................................................................................ 101
4.9 对象协议 ................................................................................................................ 103
4.10 数字协议 .............................................................................................................. 104
4.11 比较协议 .............................................................................................................. 106
4.12 转换协议 .............................................................................................................. 108
4.13 容器协议 .............................................................................................................. 109
4.14 迭代协议 .............................................................................................................. 111
4.15 特性协议 .............................................................................................................. 112
4.16 函数协议 .............................................................................................................. 112
4.17 上下文管理器协议 .............................................................................................. 113
4.18 最后的话:关于 Pythonic ................................................................................... 113
5 函数 ........................................................................................... 115
5.1 函数定义 ................................................................................................................ 115
5.2 缺省参数 ................................................................................................................ 115
5.3 可变参数 ................................................................................................................ 116
5.4 关键字参数 ............................................................................................................ 117
5.5 可变关键字参数 .................................................................................................... 118
5.6 接受所有输入的函数 ............................................................................................ 118
5.7 位置限定(Positional-Only)参数 ....................................................................... 119
5.8 名称、文档字符串和类型提示 ............................................................................ 120
5.9 函数应用及参数传递 ............................................................................................ 121
5.10 返回值 .................................................................................................................. 123
5.11 错误处理 .............................................................................................................. 124
5.12 作用域规则 .......................................................................................................... 125
5.13 递归 ...................................................................................................................... 128
5.14 lambda 表达式 ..................................................................................................... 128
5.15 高阶函数 .............................................................................................................. 129
5.16 回调函数中的参数传递 ...................................................................................... 132
5.17 从回调函数返回结果 .......................................................................................... 135
5.18 装饰器 .................................................................................................................. 138
5.19 map、filter 和 reduce ........................................................................................... 141
5.20 函数自省、特性和签名 ...................................................................................... 143
5.21 环境检查 .............................................................................................................. 145
5.22 动态代码的执行和创建 ...................................................................................... 147
5.23 异步函数和 await ................................................................................................ 149
5.24 最后的话:函数与组合的思考 .......................................................................... 151
6 生成器 ........................................................................................ 153
6.1 生成器与 yield ....................................................................................................... 153
6.2 可重新启动的生成器 ............................................................................................ 156
6.3 生成器委托 ............................................................................................................ 156
6.4 生成器实践 ............................................................................................................ 158
6.5 增强型生成器和 yield 表达式 .............................................................................. 160
6.6 增强型生成器的应用 ............................................................................................ 162
6.7 生成器与 await 的联系 ......................................................................................... 165
6.8 最后的话:生成器简史及展望 ............................................................................ 166
7 类和面向对象编程 .......................................................................... 167
7.1 对象 ........................................................................................................................ 167
7.2 class 语句 ............................................................................................................... 168
7.3 实例 ........................................................................................................................ 169
7.4 特性访问 ................................................................................................................ 170
7.5 作用域规则 ............................................................................................................ 172
7.6 运算符重载及协议 ................................................................................................ 173
7.7 继承 ........................................................................................................................ 174
7.8 通过组合避免继承 ................................................................................................ 177
7.9 通过函数避免继承 ................................................................................................ 180
7.10 动态绑定和鸭子类型 .......................................................................................... 181
7.11 继承内置类型的危险性 ...................................................................................... 181
7.12 类变量和方法 ...................................................................................................... 183
7.13 静态方法 .............................................................................................................. 187
7.14 略谈设计模式 ...................................................................................................... 190
7.15 数据封装和私有特性 .......................................................................................... 190
7.16 类型提示 .............................................................................................................. 193
7.17 属性 ...................................................................................................................... 194
7.18 类型、接口和抽象基类 ...................................................................................... 197
7.19 多重继承、接口和 mixin .................................................................................... 201
7.20 基于类型的分派 .................................................................................................. 207
7.21 类装饰器 .............................................................................................................. 208
7.22 有监督的继承 ...................................................................................................... 211
7.23 对象生命周期与内存管理 .................................................................................. 213
7.24 弱引用 .................................................................................................................. 218
7.25 内部对象表示和特性绑定 .................................................................................. 220
7.26 代理、包装器和委托 .......................................................................................... 222
7.27 使用__slots__减少内存 ....................................................................................... 224
7.28 描述符 .................................................................................................................. 225
7.29 类定义过程 .......................................................................................................... 229
7.30 动态创建类 .......................................................................................................... 230
7.31 元类 ...................................................................................................................... 231
7.32 用于实例和类的内置对象 .................................................................................. 236
7.33 最后的话:保持简单 .......................................................................................... 237
8 模块和包 ..................................................................................... 239
8.1 模块和 import 语句 ............................................................................................... 239
8.2 模块缓存 ................................................................................................................ 241
8.3 从模块导入选定名称 ............................................................................................ 242
8.4 循环导入 ................................................................................................................ 244
8.5 模块的重新加载与卸载 ........................................................................................ 246
8.6 模块编译 ................................................................................................................ 247
8.7 模块搜索路径 ........................................................................................................ 248
8.8 作为主程序执行 .................................................................................................... 248
8.9 包 ............................................................................................................................ 249
8.10 包内导入 .............................................................................................................. 251
8.11 以脚本方式运行包的子模块 .............................................................................. 252
8.12 控制包命名空间 .................................................................................................. 253
8.13 控制包的导出 ...................................................................................................... 254
8.14 包数据 .................................................................................................................. 255
8.15 模块对象 .............................................................................................................. 256
8.16 部署 Python 包 ..................................................................................................... 257
8.17 倒数第二句话:从一个包开始 .......................................................................... 258
8.18 最后的话:保持简单 .......................................................................................... 259
9 输入与输出 .................................................................................. 261
9.1 数据表示 ................................................................................................................ 261
9.2 文本编码和解码 .................................................................................................... 262
9.3 文本和字节格式化 ................................................................................................ 264
9.4 读取命令行选项 .................................................................................................... 268
9.5 环境变量 ................................................................................................................ 270
9.6 文件和文件对象 .................................................................................................... 270
9.6.1 文件名称 ................................................................................................... 271
9.6.2 文件模式 ................................................................................................... 272
9.6.3 I/O 缓冲 ..................................................................................................... 272
9.6.4 文本模式编码 ........................................................................................... 273
9.6.5 文本模式行处理 ....................................................................................... 274
9.7 I/O 抽象层 .............................................................................................................. 274
9.8 标准输入、输出和错误 ........................................................................................ 277
9.9 目录 ........................................................................................................................ 278
9.10 print()函数 ............................................................................................................ 279
9.11 生成输出 .............................................................................................................. 279
9.12 消费输入 .............................................................................................................. 280
9.13 对象序列化 .......................................................................................................... 282
9.14 阻塞操作和并发 .................................................................................................. 283
9.14.1 非阻塞 I/O ............................................................................................... 284
9.14.2 I/O 轮询 ................................................................................................... 285
9.14.3 线程 ......................................................................................................... 285
9.14.4 使用 asyncio 并发执行 ........................................................................... 286
9.15 标准库模块 .......................................................................................................... 287
9.15.1 asyncio 模块 ............................................................................................ 287
9.15.2 binascii 模块 ............................................................................................ 288
9.15.3 cgi 模块 ................................................................................................... 289
9.15.4 configparser 模块 .................................................................................... 290
9.15.5 csv 模块 ................................................................................................... 290
9.15.6 errno 模块 ................................................................................................ 291
9.15.7 fcntl 模块 ................................................................................................. 292
9.15.8 hashlib 模块 ............................................................................................. 292
9.15.9 http 包 ...................................................................................................... 293
9.15.10 io 模块 ................................................................................................... 293
9.15.11 json 模块 ................................................................................................ 294
9.15.12 logging 模块 .......................................................................................... 294
9.15.13 os 模块................................................................................................... 295
9.15.14 os.path 模块 ........................................................................................... 295
9.15.15 pathlib 模块 ........................................................................................... 296
9.15.16 re 模块 ................................................................................................... 297
9.15.17 shutil 模块 ............................................................................................. 298
9.15.18 select 模块 ............................................................................................. 298
9.15.19 smtplib 模块 .......................................................................................... 299
9.15.20 socket 模块 ............................................................................................ 300
9.15.21 struct 模块 ............................................................................................. 302
9.15.22 subprocess 模块 ..................................................................................... 302
9.15.23 tempfile 模块 ......................................................................................... 303
9.15.24 textwrap 模块 ........................................................................................ 304
9.15.25 threading 模块 ....................................................................................... 305
9.15.26 time 模块 ............................................................................................... 307
9.15.27 urllib 包 ................................................................................................. 307
9.15.28 unicodedata 模块 ................................................................................... 308
9.15.29 xml 包 .................................................................................................... 309
9.16 最后的话 .............................................................................................................. 310
10 内置函数和标准库 ........................................................................ 311
10.1 内置函数 .............................................................................................................. 311
10.2 内置异常 .............................................................................................................. 328
10.2.1 异常基类 ................................................................................................. 328
10.2.2 异常特性 ................................................................................................. 328
10.2.3 预定义异常类 ......................................................................................... 329
10.3 标准库 .................................................................................................................. 332
10.3.1 collections 模块 ....................................................................................... 332
10.3.2 datetime 模块 .......................................................................................... 332
10.3.3 itertools 模块 ........................................................................................... 332
10.3.4 inspect 模块 ............................................................................................. 332
10.3.5 math 模块 ................................................................................................ 332
10.3.6 os 模块 .................................................................................................... 333
10.3.7 random 模块 ............................................................................................ 333
10.3.8 re 模块 ..................................................................................................... 333
10.3.9 shutil 模块 ............................................................................................... 333
10.3.10 statistics 模块 ........................................................................................ 333
10.3.11 sys 模块 ................................................................................................. 333
10.3.12 time 模块 ............................................................................................... 333
10.3.13 turtle 模块 .............................................................................................. 333
10.3.14 unittest 模块 .......................................................................................... 333
10.4 最后的话:使用内置功能 .................................................................................. 334

读者评论