这是一本关于Python编程的书。它并不覆盖Python的方方面面,其重点是呈现现代且精选的Python语言核心,即侧重于Python编程本身。这包括抽象实现、程序结构、函数、对象与类型、协议、生成器、I/O、模块等主题,同时对Python常用的内置函数及标准库进行了简要介绍。这些内容能够有效帮助Python程序员应对各种项目规模的挑战。同时,本书通常会省略那些完全可以通过IDE轻松获取的参考内容(例如函数列表、命令名称、参数等),并特意不去描述Python编辑器工具、IDE、部署等快速变化的内容及相关问题。本书适合Python程序员及相关科学家、工程师、软件专业人士阅读。
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应用》。
1 Python基础\t1
1.1 运行Python\t1
1.2 Python程序\t2
1.3 基本类型、变量与表达式\t3
1.4 算术运算符\t5
1.5 条件与控制流\t7
1.6 文本串\t9
1.7 文件输入与输出\t12
1.8 列表\t13
1.9 元组\t15
1.10 Set\t17
1.11 字典\t18
1.12 迭代与循环\t21
1.13 函数\t23
1.14 异常\t24
1.15 程序终止\t26
1.16 对象和类\t26
1.17 模块\t30
1.18 脚本编写\t33
1.19 包\t34
1.20 构建应用程序\t35
1.21 第三方包管理\t36
1.22 Python让人感到舒适\t37
2 运算符、表达式和数据操作\t38
2.1 字面量\t38
2.2 表达式与地址\t39
2.3 标准运算符\t40
2.4 就地赋值\t42
2.5 对象比较\t43
2.6 有序比较运算符\t43
2.7 布尔表达式及真值\t44
2.8 条件表达式\t45
2.9 迭代操作\t46
2.10 序列操作\t48
2.11 可变序列操作\t50
2.12 Set操作\t51
2.13 映射操作\t52
2.14 列表、Set与字典解析式\t53
2.15 生成器表达式\t55
2.16 特性(.)运算符\t57
2.17 函数调用()运算符\t57
2.18 求值顺序\t57
2.19 最后的话:数据的秘密\t59
3 程序结构与控制流\t60
3.1 程序结构与执行\t60
3.2 条件执行\t60
3.3 循环与迭代\t61
3.4 异常\t65
3.4.1 异常层次\t68
3.4.2 异常与控制流\t69
3.4.3 定义新异常\t70
3.4.4 链式异常\t71
3.4.5 异常回溯\t74
3.4.6 异常处理建议\t74
3.5 上下文管理器和with语句\t76
3.6 断言和__debug__\t78
3.7 最后的话\t79
4 对象、类型和协议\t80
4.1 核心概念\t80
4.2 对象标识与类型\t81
4.3 引用计数与垃圾回收\t82
4.4 引用与复制\t84
4.5 对象的表示与打印\t85
4.6 头等对象\t86
4.7 对可选的或缺失的数据使用None\t88
4.8 对象协议及数据抽象\t88
4.9 对象协议\t90
4.10 数字协议\t91
4.11 比较协议\t93
4.12 转换协议\t95
4.13 容器协议\t96
4.14 迭代协议\t98
4.15 特性协议\t99
4.16 函数协议\t100
4.17 上下文管理器协议\t100
4.18 最后的话:关于Pythonic\t101
5 函数\t102
5.1 函数定义\t102
5.2 缺省参数\t102
5.3 可变参数\t103
5.4 关键字参数\t104
5.5 可变关键字参数\t105
5.6 接受所有输入的函数\t105
5.7 位置限定(Positional-Only)参数\t106
5.8 名称、文档字符串和类型提示\t107
5.9 函数应用及参数传递\t108
5.10 返回值\t110
5.11 错误处理\t111
5.12 作用域规则\t112
5.13 递归\t115
5.14 lambda表达式\t115
5.15 高阶函数\t116
5.16 回调函数中的参数传递\t119
5.17 从回调函数返回结果\t123
5.18 装饰器\t125
5.19 map、filter和reduce\t128
5.20 函数自省、特性和签名\t130
5.21 环境检查\t133
5.22 动态代码的执行和创建\t135
5.23 异步函数和await\t136
5.24 最后的话:函数与组合的思考\t138
6 生成器\t139
6.1 生成器与yield\t139
6.2 可重新启动的生成器\t142
6.3 生成器委托\t142
6.4 生成器实践\t144
6.5 增强型生成器和yield表达式\t146
6.6 增强型生成器的应用\t148
6.7 生成器与await的联系\t151
6.8 最后的话:生成器简史及展望\t152
7 类和面向对象编程\t153
7.1 对象\t153
7.2 class语句\t154
7.3 实例\t155
7.4 特性访问\t156
7.5 作用域规则\t158
7.6 运算符重载及协议\t159
7.7 继承\t160
7.8 通过组合避免继承\t163
7.9 通过函数避免继承\t166
7.10 动态绑定和鸭子类型\t167
7.11 继承内置类型的危险性\t167
7.12 类变量和方法\t169
7.13 静态方法\t173
7.14 略谈设计模式\t176
7.15 数据封装和私有特性\t176
7.16 类型提示\t179
7.17 属性\t180
7.18 类型、接口和抽象基类\t183
7.19 多重继承、接口和mixin\t187
7.20 基于类型的分派\t193
7.21 类装饰器\t194
7.22 有监督的继承\t197
7.23 对象生命周期与内存管理\t200
7.24 弱引用\t204
7.25 内部对象表示和特性绑定\t206
7.26 代理、包装器和委托\t208
7.27 使用__slots__减少内存\t210
7.28 描述符\t211
7.29 类定义过程\t215
7.30 动态创建类\t216
7.31 元类\t218
7.32 用于实例和类的内置对象\t222
7.33 最后的话:保持简单\t223
8 模块和包\t224
8.1 模块和import语句\t224
8.2 模块缓存\t226
8.3 从模块导入选定名称\t227
8.4 循环导入\t229
8.5 模块的重新加载与卸载\t231
8.6 模块编译\t232
8.7 模块搜索路径\t232
8.8 作为主程序执行\t233
8.9 包\t234
8.10 包内导入\t236
8.11 以脚本方式运行包的子模块\t237
8.12 控制包命名空间\t238
8.13 控制包的导出\t239
8.14 包数据\t240
8.15 模块对象\t241
8.16 部署Python包\t242
8.17 倒数第二句话:从一个包开始\t244
8.18 最后的话:保持简单\t244
9 输入与输出\t245
9.1 数据表示\t245
9.2 文本编码和解码\t246
9.3 文本和字节格式化\t248
9.4 读取命令行选项\t252
9.5 环境变量\t253
9.6 文件和文件对象\t254
9.6.1 文件名称\t255
9.6.2 文件模式\t256
9.6.3 I/O缓冲\t256
9.6.4 文本模式编码\t257
9.6.5 文本模式行处理\t257
9.7 I/O抽象层\t258
9.8 标准输入、输出和错误\t261
9.9 目录\t262
9.10 print()函数\t262
9.11 生成输出\t263
9.12 消费输入\t264
9.13 对象序列化\t266
9.14 阻塞操作和并发\t267
9.14.1 非阻塞I/O\t268
9.14.2 I/O轮询\t269
9.14.3 线程\t269
9.14.4 使用asyncio并发执行\t270
9.15 标准库模块\t271
9.15.1 asyncio模块\t271
9.15.2 binascii模块\t272
9.15.3 cgi模块\t273
9.15.4 configparser模块\t274
9.15.5 csv模块\t274
9.15.6 errno模块\t275
9.15.7 fcntl模块\t276
9.15.8 hashlib模块\t276
9.15.9 http包\t277
9.15.10 io模块\t277
9.15.11 json模块\t278
9.15.12 logging模块\t278
9.15.13 os模块\t279
9.15.14 os.path模块\t279
9.15.15 pathlib模块\t281
9.15.16 re模块\t281
9.15.17 shutil模块\t282
9.15.18 select模块\t282
9.15.19 smtplib模块\t283
9.15.20 socket模块\t284
9.15.21 struct模块\t286
9.15.22 subprocess模块\t286
9.15.23 tempfile模块\t287
9.15.24 textwrap模块\t288
9.15.25 threading模块\t289
9.15.26 time模块\t291
9.15.27 urllib包\t291
9.15.28 unicodedata模块\t292
9.15.29 xml包\t293
9.16 最后的话\t294
10 内置函数和标准库\t295
10.1 内置函数\t295
10.2 内置异常\t311
10.2.1 异常基类\t311
10.2.2 异常特性\t311
10.2.3 预定义异常类\t312
10.3 标准库\t315
10.3.1 collections模块\t315
10.3.2 datetime模块\t315
10.3.3 itertools模块\t315
10.3.4 inspect模块\t316
10.3.5 math模块\t316
10.3.6 os模块\t316
10.3.7 random模块\t316
10.3.8 re模块\t316
10.3.9 shutil模块\t316
10.3.10 statistics模块\t316
10.3.11 sys模块\t316
10.3.12 time模块\t316
10.3.13 turtle模块\t317
10.3.14 unittest模块\t317
10.4 最后的话:使用内置功能\t317