Python精粹
  • 推荐0
  • 收藏0
  • 浏览70

Python精粹

【美】David M. Beazley (作者)  卢俊祥 (译者) 张春雨 (责任编辑)

  • 书  号:9787121451638
  • 出版日期:2023-04-01
  • 页  数:332
  • 开  本:16(240*190)
  • 出版状态:上市销售
  • 原书名: Python Distilled
  • 原书号:9780134173276
  • 维护人:张春雨
这是一本关于Python编程的书。它并不覆盖Python的方方面面,其重点是呈现现代且精选的Python语言核心,即侧重于Python编程本身。这包括抽象实现、程序结构、函数、对象与类型、协议、生成器、I/O、模块等主题,同时对Python常用的内置函数及标准库进行了简要介绍。这些内容能够有效帮助Python程序员应对各种项目规模的挑战。同时,本书通常会省略那些完全可以通过IDE轻松获取的参考内容(例如函数列表、命令名称、参数等),并特意不去描述Python编辑器工具、IDE、部署等快速变化的内容及相关问题。
《Python精粹》适合Python程序员及相关科学家、工程师、软件专业人士阅读。
领域畅销名著作者烫手力作+Distilled经典系列再续新篇|提炼核心话题+浓缩精华技术+拧干废话水分+深入思考语言|支持Python 3.6以上版本
作者简介
David M. Beazley是Python Essential Reference(第4版,Addison-Wesley,2010年出版)和Python Cookbook(第3版,O'Reilly,2013年出版)的作者。他目前在自己的公司Dabeaz教授计算机科学高级课程。自1996年以来,他一直在使用及教授Python,并进行Python方面的写作及演讲。

译者简介
卢俊祥,网名2gua,书迷;关注Web技术趋势,热衷于App开发、Web开发、数据分析、架构设计以及各类编程语言;陈氏太极拳五十六式爱好者。主要译著有:《The Little Schemer:递归与函数式的奥妙》《SPA设计与架构:理解单页面Web应用》。
前言
自我撰写Python Essential Reference以来,时间已经过去了20多年。那时,Python还是一门非常小众的编程语言,因此第1版的Python Essential Reference也就只装着Python标准库的一组实用工具,所以阅读该书并不费脑。该书的第1版反映了那个时代Python的实际情况。该书本来是一本小书,开发者可以随身携带着它在荒岛或神秘宝库等地方写Python代码。在随后的3个版本中,Python Essential Reference或多或少地演进为一本紧凑而完整的语言参考书——如果你打算在整个长假里实践Python编程的话,那么为什么不把Python研究得彻彻底底呢?
今天,距离上一版Python Essential Reference的出版已经过去了十多年,Python生态早已今非昔比。Python不再是一种小众编程语言,它已经成长为世界上最流行的编程语言之一。Python程序员可以通过手边的高级编辑器、IDE、笔记本、网页获取丰富的Python帮助信息。事实上,已经没有太大必要查阅参考书,因为你敲几个键就能获取几乎所有想要的参考资料。
要说有什么问题,那就是到处都能搜索信息,Python的内容又如此之多,这种现实情况带来了一种不同的挑战。如果你刚开始学习或需要解决一个新问题,那么对从何处入手可能会不知所措。[ 毕竟信息爆炸时代如何筛选出有效的知识也是一门学问。——译者注]同时,将各种工具的功能特性跟语言核心本身区别开来也很困难。而解决此类问题正是本书的出发点。
本书是一本关于Python编程的书。它并不覆盖Python的方方面面,它的重点是呈现现代且精选的Python语言核心。长期向科学家、工程师以及软件专业人士教授Python的经历,让我认识到这种知识组织方式非常重要。不过,它也是一本关于编写软件库、拓宽Python应用边界及发掘实效技术的图书。
在大多数情况下,本书侧重于Python编程本身。这包括抽象实现、程序结构、数据、函数、对象、模块等主题,这些主题能够有效帮助Python程序员应对各种项目规模的挑战。而那些可以完全通过IDE轻松获取的参考内容(比如函数列表、命令名称、参数等),本书通常会省略。我也特意不去描述Python编辑器工具、IDE、部署等快速变化的内容及相关问题。
也许有争议的是,与大型软件项目管理相关的语言特性并非本书重点。Python有时也用于由数百万行代码组成的大型而重要的项目。此类应用需要专门的工具、设计和功能特性。它们还涉及委员会的设立和各种会议,以及对重大事项做出决定。对于我们这本小书来说,这要求太高了。但也许最实在的原因是,我并不使用Python来编写这样的应用程序——你也不应该这样做,至少别养成这种嗜好。[ 推测作者这里想要表达的意思是,由于Python大型项目需要体系化支撑,“没有金刚钻,就别揽瓷器活儿”,没有过硬的功底和足够的组织力量,就不要轻易尝试此类项目。这里应该没有低估Python的意思。——译者注]
一本书的编写,对于不断发展的语言特性总是有一个界限。本书编写于Python 3.9发布时期。因此,它不包括计划在Python后续版本中添加的一些主要功能,如结构化模式匹配,这也许是本书后续版本要讲的话题。
最后,但同样重要的是,我认为保持编程乐趣很重要。我希望本书不仅能帮助你成为一名高效的Python程序员,还能让你获得某种神奇的魔法,从而能够使用Python来探索星辰,在火星上驾驭直升机,以及在后院用水枪喷射松鼠。

目录

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

读者评论