Skip to content

目录

第一部分 序幕

第1章 Python 数据模型

Abstract
  • 1.1 一摞Python风格的纸牌
  • 1.2 如何使用特殊方法
  • 1.3 特殊方法一览
  • 1.4 为什么len不是普通方法
  • 1.5 本章小结
  • 1.6 延伸阅读

第二部分 数据结构

第2章 序列构成的数组

Abstract
  • 2.1 内置序列类型概览
  • 2.2 列表推导和生成器表达式
  • 2.3 元组不仅仅是不可变列表
  • 2.4 切片
  • 2.5 对序列使用+和*
  • 2.6 序列的增量赋值
  • 2.7 list.sort方法和内置函数sorted
  • 2.8 用bisect来管理已排序的序列
  • 2.9 当列表不是首选时
  • 2.10 本章小结
  • 2.11 延伸阅读

第3章 字典和集合

Abstract
  • 3.1 泛映射类型
  • 3.2 字典推导
  • 3.3 常见的映射方法
  • 3.4 映射的弹性键查询
  • 3.5 字典的变种
  • 3.6 子类化UserDict
  • 3.7 不可变映射类型
  • 3.8 集合论
  • 3.9 dict和set的背后
  • 3.10 本章小结
  • 3.11 延伸阅读

第4章 文本和字节序列

Abstract
  • 4.1 字符问题
  • 4.2 字节概要
  • 4.3 基本的编解码器
  • 4.4 了解编解码问题
  • 4.5 处理文本文件
  • 4.6 为了正确比较而规范化Unicode字符串
  • 4.7 Unicode文本排序
  • 4.8 Unicode数据库
  • 4.9 支持字符串和字节序列的双模式API
  • 4.10 本章小结
  • 4.11 延伸阅读

第三部分 把函数视作对象

第5章 一等函数

Abstract
  • 5.1 把函数视作对象
  • 5.2 高阶函数
  • 5.3 匿名函数
  • 5.4 可调用函数
  • 5.5 用户定义的可调用类型
  • 5.6 函数内省
  • 5.7 从定位参数到仅限关键字参数
  • 5.8 获取关于参数的信息
  • 5.9 函数注解
  • 5.10 支持函数式编程的信息
  • 5.12 延伸阅读

第6章 使用一等函数实现设计模式

Abstract
  • 6.1 案例分析:重构“策略”模式
  • 6.2 “命令”模式
  • 6.3 本章小结
  • 6.4 延伸阅读

第7章 函数装饰器和闭包

Abstract
  • 7.1 装饰器基础知识
  • 7.2 Python何时执行装饰器
  • 7.3 使用装饰器改进“策略”模式
  • 7.4 变量作用域规则
  • 7.5 闭包
  • 7.6 nonlocal声明
  • 7.7 实现一个简单的装饰器
  • 7.8 标准库中的装饰器
  • 7.9 叠放装饰器
  • 7.10 参数化装饰器
  • 7.11 本章小结
  • 7.12 延伸阅读

第四部分 面向对象惯用法

第8章 对象引用、可变性和垃圾回收

Abstract
  • 8.1 变量不是盒子
  • 8.2 标识、相等性和别名
  • 8.3 默认做浅复制
  • 8.4 函数的参数作为引用时
  • 8.5 del和垃圾回收
  • 8.6 弱引用
  • 8.7 Python对不可变类型施加的把戏
  • 8.9 延伸阅读

第9章 符合Python风格的对象

Abstract
  • 9.1 对象表示形式
  • 9.2 再谈向量类
  • 9.3 备选构造函数
  • 9.4 classmethod与staticmethod
  • 9.5 格式化显示
  • 9.6 可散列的Vector2d
  • 9.7 Python的私有属性和“受保护的”属性
  • 9.8 使用__slots__类属性节省空间
  • 9.9 覆盖类属性
  • 9.10 本章小结
  • 9.11 延伸阅读

第10章 序列的修改、散列和切片

Abstract
  • 10.1 Vector类:用户定义的序列类型
  • 10.2 Vector类第1版:与Vector2d类兼容
  • 10.3 协议和鸭子类型
  • 10.4 Vector类第2版:可切片的序列
  • 10.5 Vector类第3版:动态存取属性
  • 10.6 Vector类第4版:散列和快速等值测试
  • 10.7 Vector类第5版:格式化
  • 10.8 本章小结
  • 10.9 延伸阅读

第11章 接口:从协议到抽象基类

Abstract
  • 11.1 Python文件中的接口和协议
  • 11.2 Python喜欢序列
  • 11.3 使用猴子补丁在运行时实现协议
  • 11.4 Alex Martelli的水禽
  • 11.5 定义抽象基类的子类
  • 11.6 标准库中的抽象基类
  • 11.7 定义并使用一个抽象基类
  • 11.8 Tombola子类的测试方法
  • 11.9 Python使用register的方式
  • 11.10 鹅的行为有可能像鸭子
  • 11.11 本章小结
  • 11.12 延伸阅读

第12章 继承的优缺点

Abstract
  • 12.1 子类化内置类型很麻烦
  • 12.2 多重继承和方法解析顺序
  • 12.3 多重继承的真实应用
  • 12.4 处理多重继承
  • 12.5 一个现代示例:Django通用视图中的混入
  • 12.6 本章小结
  • 12.7 延伸阅读

第13章 正确重载运算符

Abstract
  • 13.1 运算符重载基础
  • 13.2 一元运算符
  • 13.3 重载向量加法运算符+
  • 13.4 重载标量乘法运算符*
  • 13.5 众多比较运算符
  • 13.6 增量赋值运算符
  • 13.7 本章小结
  • 13.8 延伸阅读

第五部分 控制流程

第14章 可迭代的对象、迭代器和生成器

Abstract
  • 14.1 Sentence类第1版:单词序列
  • 14.2 可迭代对象与迭代器的对比
  • 14.3 Sentence类第2版:典型的迭代器
  • 14.4 Sentence类第3版:生成器函数
  • 14.5 Sentence类第4版:惰性实现
  • 14.6 Sentence类第5版:生成器表达式
  • 14.7 何时使用生成器表达式
  • 14.8 另一个示例:等差数列生成器
  • 14.9 标准库中的生成器函数
  • 14.10 Python3.3中新出现的句法:yield from
  • 14.11 可迭代的归约函数
  • 14.12 深入分析iter函数
  • 14.13 案例分析:在数据库转换工具中使用生成器
  • 14.14 把生成器当成协程
  • 14.15 本章小结
  • 14.16 延伸阅读

第15章 上下文管理器和else块

Abstract
  • 15.1 先做这个,再做那个:if语句之外的else块
  • 15.2 上下文管理器和with块
  • 15.3 contextlib模块中的实用工具
  • 15.4 使用@contextmanager
  • 15.5 本章小结
  • 15.6 延伸阅读

第16章 协程

Abstract
  • 16.1 生成器如何进化成协程
  • 16.2 用作协程的生成器的基本行为
  • 16.3 示例:使用协程计算移动平均值
  • 16.4 预激协程的装饰器
  • 16.5 终止协程和异常处理
  • 16.6 让协程返回值
  • 16.7 使用yield from
  • 16.8 yield from的意义
  • 16.9 使用案例:使用协程做离散事件仿真
  • 16.10 本章小结
  • 16.11 延伸阅读

第17章 使用future处理并发

Abstract
  • 17.1 示例:网络下载的三种风格
  • 17.2 阻塞型IO和GIL
  • 17.3 使用concurrent.futures模块启动进程
  • 17.4 实验Executor.map方法
  • 17.5 显示下载进度条并处理错误
  • 17.6 本章小结
  • 17.7 延伸阅读

第18章 使用asyncio包处理并发

Abstract
  • 18.1 线程和协程对比
  • 18.2 使用asyncio和aiohttp包下载
  • 18.3 避免阻塞型调用
  • 18.4 改进asyncio下载脚本
  • 18.5 从回调到期物和协程
  • 18.6 使用asyncio包编写服务器
  • 18.7 本章小结
  • 18.8 延伸阅读

第六部分 元编程

第19章 动态属性和特性

Abstract
  • 19.1 使用动态属性转换数据
  • 19.2 使用特性验证属性
  • 19.3 特性全解析
  • 19.4 定义一个特性工厂函数
  • 19.5 处理属性删除操作
  • 19.6 处理属性的重要属性和函数
  • 19.7 本章小结
  • 19.8 延伸阅读

第20章 属性描述符

Abstract
  • 20.1 描述符示例:验证属性
  • 20.2 覆盖型与非覆盖型描述符对比
  • 20.3 方法是描述符
  • 20.4 描述符用法建议
  • 20.5 描述符的文档字符串和覆盖删除操作
  • 20.6 本章小结
  • 20.7 延伸阅读

第21章 类元编程

Abstract
  • 21.1 类工厂函数
  • 21.2 定制描述符的类装饰器
  • 21.3 导入时和运行时比较
  • 21.4 元类基础知识
  • 21.5 定制描述符的元类
  • 21.6 元类的特殊方法__prepare__
  • 21.7 类作为对象
  • 21.8 本章小结
  • 21.9 延伸阅读

拓展阅读