豆瓣高分

PS:这是《流畅的Python》全书章节内容。制作:豌豆花下猫@Python猫。在Python猫公众号内回复『流畅』,可获取高清思维导图

第一部分 序幕

第1章 Python数据模型

  • 1.1 一摞Python风格的纸牌
  • 1.2 如何使用特殊方法1.2.1 模拟数值类型1.2.2 字符串表示形式1.2.3 算术运算符1.2.4 自定义的布尔值
  • 1.3 特殊方法一览
  • 1.4 为什么len不是普通方法
  • 1.5 本章小结
  • 1.6 延伸阅读

第二部分 数据结构

第2章 序列构成的数组

  • 2.1 内置序列类型概览
  • 2.2 列表推导和生成器表达式2.2.1 列表推导和可读性2.2.2 列表推导同filter和map的比较2.2.3 笛卡尔积2.2.4 生成器表达式
  • 2.3 元组不仅仅是不可变列表2.3.1 元组和记录2.3.2 元组拆包2.3.3 嵌套元组拆包2.3.4 具名元组2.3.5 作为不可变列表的元组
  • 2.4 切片2.4.1 为什么切片和区间会忽略最后一个元素2.4.2 对对象进行切片2.4.3 多维切片和省略2.4.4 给切片赋值
  • 2.5 对序列使用+和*建立由列表组成的列表
  • 2.6 序列的增量赋值一个关于+=的谜题
  • 2.7 list.sort方法和内置函数sorted
  • 2.8 用bisect来管理已排序的序列2.8.1 用bisect来搜索2.8.2 用bisect.insert插入新元素
  • 2.9 当列表不是首选时2.9.1 数组2.9.2 内存视图2.9.3 NumPy和SciPy2.9.4 双向队列和其它形式的队列
  • 2.10 本章小结
  • 2.11 延伸阅读

第3章 字典和集合

  • 3.1 泛映射类型
  • 3.2 字典推导
  • 3.3 常见的映射方法用setdefault处理找不到的键
  • 3.4 映射的弹性键查询3.4.1 defaultdict:处理找不到的键的一个选择3.4.2 特殊方法missing
  • 3.5 字典的变种
  • 3.6 子类化UserDict
  • 3.7 不可变映射类型
  • 3.8 集合论3.8.1 集合字面量3.8.2 集合推导3.8.3 集合的操作
  • 3.9 dict和set的背后3.9.1 一个关于效率的实验3.9.2 字典中的散列表3.9.3 dict的实现及其导致的结果3.9.4 set的实现以及导致的结果
  • 3.10 本章小结
  • 3.11 延伸阅读

第4章 文本和字节序列

  • 4.1 字符问题
  • 4.2 字节概要结构体和内存视图
  • 4.3 基本的编解码器
  • 4.4 了解编解码问题4.4.1 处理UnicodeEncodeError4.4.2 处理UnicodeDecodeError4.4.3 使用预期之外的编码加载模块时抛出的SyntaxError4.4.4 如何找出字节序列的编码4.4.5 BOM:有用的鬼符
  • 4.5 处理文本文件编码默认值:一团糟
  • 4.6 为了正确比较而规范化Unicode字符串4.6.1 大小写折叠4.6.2 规范化文本匹配实用函数4.6.3 极端“规范化”:去掉变音符号
  • 4.7 Unicode文本排序使用Unicode排序算法排序
  • 4.8 Unicode数据库
  • 4.9 支持字符串和字节序列的双模式API4.9.1正则表达式中的字符串和字节序列4.9.2 os函数中的字符串和字节序列
  • 4.10 本章小结
  • 4.11 延伸阅读

第三部分 把函数视作对象

第5章 一等函数

  • 5.1 把函数视作对象
  • 5.2 高阶函数map、filter和reduce的现代替代品
  • 5.3 匿名函数
  • 5.4 可调用函数
  • 5.5 用户定义的可调用类型
  • 5.6 函数内省
  • 5.7 从定位参数到仅限关键字参数
  • 5.8 获取关于参数的信息
  • 5.9 函数注解
  • 5.10 支持函数式编程的信息5.10.1 operator模块5.10.2 使用functools.partial冻结参数
  • 5.12 延伸阅读

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

  • 6.1 案例分析:重构“策略”模式6.1.1 经典的“策略”模式6.1.2 使用函数实现“策略”模式6.1.3 选择最佳策略:简单的方式6.1.4 找出模块中的全部策略
  • 6.2 “命令”模式
  • 6.3 本章小结
  • 6.4 延伸阅读

第7章 函数装饰器和闭包

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

PS:这是《流畅的Python》全书章节内容。制作:豌豆花下猫@Python猫。在Python猫公众号内回复『流畅』,可获取高清思维导图

第四部分 面向对象惯用法

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

  • 8.1 变量不是盒子
  • 8.2 标识、相等性和别名8.2.1 在==和is之间选择8.2.2 元组的相对不可变性
  • 8.3 默认做浅复制为任意对象做深复制和浅复制
  • 8.4 函数的参数作为引用时8.4.1 不要使用可变类型作为参数的默认值8.4.2 防御可变参数
  • 8.5 del和垃圾回收
  • 8.6 弱引用8.6.1 WeakValueDictionary简介8.6.2 弱引用的局限
  • 8.7 Python对不可变类型施加的把戏
  • 8.9 延伸阅读

第9章 符合Python风格的对象

  • 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章 序列的修改、散列和切片

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

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

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

第12章 继承的优缺点

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

PS:这是《流畅的Python》全书章节内容。制作:豌豆花下猫@Python猫。在Python猫公众号内回复『流畅』,可获取高清思维导图

第13章 正确重载运算符

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

第五部分 控制流程

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

  • 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块

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

第16章 协程

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

第17章 使用future处理并发

  • 17.1 示例:网络下载的三种风格17.1.1 依序下载的脚本17.1.2 使用concurrent.futures模块下载17.1.3 期物在哪里
  • 17.2 阻塞型IO和GIL
  • 17.3 使用concurrent.futures模块启动进程
  • 17.4 实验Executor.map方法
  • 17.5 显示下载进度条并处理错误17.5.1 flags2系列示例处理错误的方式17.5.2 使用futures.as_completed函数17.5.3 线程和多进程的替代方案
  • 17.6 本章小结
  • 17.7 延伸阅读

第18章 使用asyncio包处理并发

  • 18.1 线程和协程对比18.1.1 asyncio.Future:故意不阻塞18.1.2 从期物、任务和协程中产出
  • 18.2 使用asyncio和aiohttp包下载
  • 18.3 避免阻塞型调用
  • 18.4 改进asyncio下载脚本18.4.1 改进asyncio.as_completed函数18.4.2 使用Executor对象,防止阻塞事件循环
  • 18.5 从回调到期物和协程
  • 18.6 使用asyncio包编写服务器18.6.1 使用asyncio包编写TCP服务器18.6.2 使用aiohttp包编写Web服务器18.6.3 更好地支持并发的智能客户端
  • 18.7 本章小结
  • 18.8 延伸阅读

PS:这是《流畅的Python》全书章节内容。制作:豌豆花下猫@Python猫。在Python猫公众号内回复『流畅』,可获取高清思维导图

第六部分 元编程

第19章 动态属性和特性

  • 19.1 使用动态属性转换数据19.1.1 使用动态属性访问JSON类数据19.1.2 处理无效属性名19.1.3 使用new方法以灵活的方式创建对象19.1.4 使用shelve模块调整OSCON数据源的结构19.1.5 使用特性获取链接的记录
  • 19.2 使用特性验证属性19.2.1 LineItem类第1版:表示订单中商品的类19.2.2 LineItem类第2版:能验证值的特性
  • 19.3 特性全解析19.3.1 特性会覆盖实例属性19.3.2 特性的文档
  • 19.4 定义一个特性工厂函数
  • 19.5 处理属性删除操作
  • 19.6 处理属性的重要属性和函数19.6.1 影响属性处理方式的特殊属性19.6.2 处理属性的内置函数19.6.3 处理属性的特殊方法
  • 19.7 本章小结
  • 19.8 延伸阅读

第20章 属性描述符

  • 20.1 描述符示例:验证属性20.1.1 LineItem类第3版:一个简单的描述符20.1.2 LineItem类第4版:自动获取储存属性的名称20.1.3 LineItem类第5版:一种新型描述符
  • 20.2 覆盖型与非覆盖型描述符对比20.2.1 覆盖型描述符20.2.2 没有get方法的覆盖型描述符20.2.3 非覆盖型描述符20.2.4 在类中覆盖描述符
  • 20.3 方法是描述符
  • 20.4 描述符用法建议
  • 20.5 描述符的文档字符串和覆盖删除操作
  • 20.6 本章小结
  • 20.7 延伸阅读

第21章 类元编程

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

PS:这是《流畅的Python》全书章节内容。制作:豌豆花下猫@Python猫。在Python猫公众号内回复『流畅』,可获取高清思维导图(下图是主干内容)

思维导图