深入理解 Python 特性 PDF 文档
本书致力于帮助 Python 开发人员挖掘这门语言及相关程序库的优秀特性,避免重复劳动,同时写出简洁、流畅、易读、易维护的代码。通过本书,你会明白用好 Python 需要了解的重要特性,从 Python 2 过渡到 Python 3 需要掌握的现代模式,以及有其他编程语言背景、想快速上手 Python 的程序员需要特别注意的问题,等等。
本书面向所有 Python 开发人员,以及所有对 Python 感兴趣的程序员。
从我第一次接触 Python 这门编程语言到现在已经有将近 10 年了。多年前第一次学习 Python 时,我还有点不情愿。在此之前,我使用另一门语言编程,但在工作中突然被分配到了另一个团队,其中每个人都在使用 Python。我的 Python 之旅就从那里开始了。
第一次接触 Python 时,我被告知 Python 很容易,能快速上手。当我向同事询问学习 Python 的资源时,他们只会给我 Python 官方文档的链接。刚上手就阅读文档会让人一头雾水,我就这样挣扎了一段时间,之后才慢慢适应。遇到问题时,我通常需要在 Stack Overflow 上寻找答案。
由于之前使用过另一门编程语言,我没有寻找介绍如何编程或者什么是类和对象这样的入门资源,而是一直在寻找能够介绍 Python 专有特性的资料,并尝试了解用 Python 编程与使用其他语言有何区别。
目录
第 1 章 简介
1.1 什么是 Python 技巧
1.2 本书作用
1.3 如何阅读本书
第 2 章 Python 整洁之道
2.1 用断言加一层保险
2.1.1 示例:Python 中的断言
2.1.2 为什么不用普通的异常来处理
2.1.3 Python 的断言语法
2.1.4 常见陷阱
2.1.5 Python 断言总结
2.1.6 关键要点
2.2 巧妙地放置逗号
关键要点
2.3 上下文管理器和 with 语句
2.3.1 在自定义对象中支持 with
2.3.2 用上下文管理器编写漂亮的 API
2.3.3 关键要点
2.4 下划线、双下划线及其他
2.4.1 前置单下划线:_var
2.4.2 后置单下划线:var_
2.4.3 前置双下划线:__var
2.4.4 前后双下划线:__var__
2.4.5 单下划线:_
2.4.6 关键要点
2.5 字符串格式化中令人震惊的真相
2.5.1 第一种方法:“旧式”字符串格式化
2.5.2 第二种方法:“新式”字符串格式化
2.5.3 第三种方法:字符串字面值插值(Python 3.6+)
2.5.4 第四种方法:模板字符串
2.5.5 如何选择字符串格式化方法
2.5.6 关键要点
2.6 “Python 之禅”中的彩蛋
第 3 章 高效的函数
3.1 函数是 Python 的头等对象
3.1.1 函数是对象
3.1.2 函数可存储在数据结构中
3.1.3 函数可传递给其他函数
3.1.4 函数可以嵌套
3.1.5 函数可捕捉局部状态
3.1.6 对象也可作为函数使用
3.1.7 关键要点
3.2 lambda 是单表达式函数
3.2.1 lambda 的使用场景
3.2.2 不应过度使用 lambda
3.2.3 关键要点
3.3 装饰器的力量
3.3.1 Python 装饰器基础
3.3.2 装饰器可以修改行为
3.3.3 将多个装饰器应用于一个函数
3.3.4 装饰接受参数的函数
3.3.5 如何编写“可调试”的装饰器
3.3.6 关键要点
3.4 有趣的*args 和**kwargs
3.4.1 传递可选参数或关键字参数
3.4.2 关键要点
3.5 函数参数解包
关键要点
3.6 返回空值
关键要点
第 4 章 类与面向对象
4.1 对象比较:is 与==
4.2 字符串转换(每个类都需要__repr__)
4.2.1 __str__与__repr__
4.2.2 为什么每个类都需要__repr__
4.2.3 Python 2.x 的差异:__unicode__
4.2.4 关键要点
4.3 定义自己的异常类
关键要点
4.4 克隆对象
4.4.1 制作浅副本
4.4.2 制作深副本
4.4.3 复制任意对象
4.4.4 关键要点
4.5 用抽象基类避免继承错误
关键要点
4.6 namedtuple 的优点
4.6.1 namedtuple 上场
4.6.2 子类化 namedtuple
4.6.3 内置的辅助方法
4.6.4 何时使用 namedtuple
4.6.5 关键要点
4.7 类变量与实例变量的陷阱
4.7.1 与狗无关的例子
4.7.2 关键要点
4.8 实例方法、类方法和静态方法揭秘
4.8.1 实例方法
4.8.2 类方法
4.8.3 静态方法
4.8.4 在实践中探寻
4.8.5 使用 @classmethod 的 Pizza 工厂类
4.8.6 什么时候使用静态方法
4.8.7 关键要点
第 5 章 Python 中常见的数据结构
5.1 字典、映射和散列表
5.1.1 dict——首选字典实现
5.1.2 collections.OrderedDict——能记住键的插入顺序
5.1.3 collections.defaultdict——为缺失的键返回默认值
5.1.4 collections.ChainMap——搜索多个字典
5.1.5 types.MappingProxyType——用于创建只读字典
5.1.6 Python 中的字典:总结
5.1.7 关键要点
5.2 数组数据结构
5.2.1 列表——可变动态数组
5.2.2 元组——不可变容器
5.2.3 array.array——基本类型数组
5.2.4 str——含有 Unicode 字符的不可变数组
5.2.5 bytes——含有单字节的不可变数组
5.2.6 bytearray——含有单字节的可变数组
5.2.7 关键要点
5.3 记录、结构体和纯数据对象
5.3.1 字典——简单数据对象
5.3.2 元组——不可变对象集合
5.3.3 编写自定义类——手动精细控制
5.3.4 collections.namedtuple——方便的数据对象
5.3.5 typing.NamedTuple——改进版 namedtuple
5.3.6 struct.Struct——序列化 C 结构体
5.3.7 types.SimpleNamespace——花哨的属性访问
5.3.8 关键要点
5.4 集合和多重集合
5.4.1 set——首选集合实现
5.4.2 frozenset——不可变集合
5.4.3 collections.Counter——多重集合
5.4.4 关键要点
5.5 栈(后进先出)
5.5.1 列表——简单的内置栈
5.5.2 collections.deque——快速且稳健的栈
5.5.3 queue.LifoQueue——为并行计算提供锁语义
5.5.4 比较 Python 中各个栈的实现
5.5.5 关键要点
5.6 队列(先进先出)
5.6.1 列表——非常慢的队列
5.6.2 collections.deque——快速和稳健的队列
5.6.3 queue.Queue——为并行计算提供的锁语义
5.6.4 multiprocessing.Queue——共享作业队列
5.6.5 关键要点
5.7 优先队列
5.7.1 列表——手动维护有序队列
5.7.2 heapq——基于列表的二叉堆
5.7.3 queue.PriorityQueue——美丽的优先级队列
5.7.4 关键要点
第 6 章 循环和迭代
6.1 编写有 Python 特色的循环
关键要点
6.2 理解解析式
关键要点
6.3 列表切片技巧与寿司操作员
关键要点
6.4 美丽的迭代器
6.4.1 无限迭代
6.4.2 for-in 循环在 Python 中的工作原理
6.4.3 更简单的迭代器类
6.4.4 不想无限迭代
6.4.5 Python 2.x 兼容性
6.4.6 关键要点
6.5 生成器是简化版迭代器
6.5.1 无限生成器
6.5.2 能够停下来的生成器
6.5.3 关键要点
6.6 生成器表达式
6.6.1 生成器表达式与列表解析式
6.6.2 过滤值
6.6.3 内联生成器表达式
6.6.4 物极必反
6.6.5 关键要点
6.7 迭代器链
关键要点
第 7 章 字典技巧
7.1 字典默认值
关键要点
7.2 字典排序
关键要点
7.3 用字典模拟 switch/case 语句
关键要点
7.4 “最疯狂”的字典表达式
关键要点
7.5 合并词典的几种方式
关键要点
7.6 美观地输出字典
关键要点
第 8 章 Python 式高效技巧
8.1 探索 Python 的模块和对象
关键要点
8.2 用 virtualenv 隔离项目依赖关系
8.2.1 使用虚拟环境
8.2.2 关键要点
8.3 一窥字节码的究竟
关键要点
第 9 章 结语
9.1 针对 Python 开发者免费每周提示
9.2 PythonistaCafe:Python 开发人员的社区
下载地址:https://www.wenjiangs.com/wp-content/uploads/2024/04/9MZQqTiXFAQ1w0YO.zip
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论