图书介绍

流畅的Python PSF研究员PDF|Epub|txt|kindle电子书版本网盘下载

流畅的Python PSF研究员
  • Luciano Ramalho著 著
  • 出版社: 北京:人民邮电出版社
  • ISBN:7115454157
  • 出版时间:2017
  • 标注页数:602页
  • 文件大小:75MB
  • 文件页数:628页
  • 主题词:

PDF下载


点此进入-本书在线PDF格式电子书下载【推荐-云解压-方便快捷】直接下载PDF格式图书。移动端-PC端通用
种子下载[BT下载速度快]温馨提示:(请使用BT下载软件FDM进行下载)软件下载地址页直链下载[便捷但速度慢]  [在线试读本书]   [在线获取解压码]

下载说明

流畅的Python PSF研究员PDF格式电子书版下载

下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。

建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!

(文件页数 要大于 标注页数,上中下等多册电子书除外)

注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具

图书目录

第一部分 序幕2

第1章 Python数据模型2

1.1 一摞Python风格的纸牌3

1.2 如何使用特殊方法6

1.2.1 模拟数值类型7

1.2.2 字符串表示形式9

1.2.3 算术运算符10

1.2.4 自定义的布尔值10

1.3 特殊方法一览10

1.4 为什么len不是普通方法12

1.5 本章小结12

1.6 延伸阅读13

第二部分 数据结构16

第2章 序列构成的数组16

2.1 内置序列类型概览17

2.2 列表推导和生成器表达式18

2.2.1 列表推导和可读性18

2.2.2 列表推导同filter和map的比较20

2.2.3 笛卡儿积20

2.2.4 生成器表达式21

2.3 元组不仅仅是不可变的列表22

2.3.1 元组和记录23

2.3.2 元组拆包23

2.3.3 嵌套元组拆包25

2.3.4 具名元组26

2.3.5 作为不可变列表的元组27

2.4 切片28

2.4.1 为什么切片和区间会忽略最后一个元素28

2.4.2 对对象进行切片29

2.4.3 多维切片和省略30

2.4.4 给切片赋值31

2.5 对序列使用+和*31

2.6 序列的增量赋值33

2.7 list.sort方法和内置函数sorted36

2.8 用bisect来管理已排序的序列37

2.8.1 用bisect来搜索38

2.8.2 用bisect.insort插入新元素40

2.9 当列表不是首选时41

2.9.1 数组41

2.9.2 内存视图44

2.9.3 NumPy和SciPy45

2.9.4 双向队列和其他形式的队列47

2.10 本章小结49

2.11 延伸阅读50

第3章 字典和集合54

3.1 泛映射类型54

3.2 字典推导56

3.3 常见的映射方法57

3.4 映射的弹性键查询61

3.4.1 defaultdict:处理找不到的键的一个选择61

3.4.2 特殊方法__missing__62

3.5 字典的变种65

3.6 子类化UserDict65

3.7 不可变映射类型67

3.8 集合论68

3.8.1 集合字面量69

3.8.2 集合推导71

3.8.3 集合的操作71

3.9 dict和set的背后73

3.9.1 一个关于效率的实验74

3.9.2 字典中的散列表75

3.9.3 dict的实现及其导致的结果78

3.9.4 set的实现以及导致的结果80

3.10 本章小结80

3.11 延伸阅读81

第4章 文本和字节序列83

4.1 字符问题84

4.2 字节概要85

4.3 基本的编解码器88

4.4 了解编解码问题89

4.4.1 处理UnicodeEncodeError90

4.4.2 处理UnicodeDecodeError90

4.4.3 使用预期之外的编码加载模块时抛出的syntaxError91

4.4.4 如何找出字节序列的编码92

4.4.5 BOM:有用的鬼符93

4.5 处理文本文件94

4.6 为了正确比较而规范化Unicode字符串99

4.6.1 大小写折叠101

4.6.2 规范化文本匹配实用函数102

4.6.3 极端“规范化”:去掉变音符号103

4.7 Unicode文本排序105

4.8 Unicode数据库108

4.9 支持字符串和字节序列的双模式API109

4.9.1 正则表达式中的字符串和字节序列109

4.9.2 os函数中的字符串和字节序列111

4.10 本章小结112

4.11 延伸阅读113

第三部分 把函数视作对象118

5.1 把函数视作对象119

5.2 高阶函数120

5.3 匿名函数122

5.4 可调用对象122

5.5 用户定义的可调用类型123

5.6 函数内省124

5.7 从定位参数到仅限关键字参数126

5.8 获取关于参数的信息127

5.9 函数注解131

5.10 支持函数式编程的包132

5.10.1 operator模块132

5.10.2 使用functools.partial冻结参数135

5.11 本章小结137

5.12 延伸阅读137

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

6.1 案例分析:重构“策略”模式142

6.1.1 经典的“策略”模式142

6.1.2 使用函数实现“策略”模式145

6.1.3 选择最佳策略:简单的方式148

6.1.4 找出模块中的全部策略149

6.2 “命令”模式150

6.3 本章小结151

6.4 延伸阅读152

第7章 函数装饰器和闭包154

7.1 装饰器基础知识155

7.2 Python何时执行装饰器156

7.3 使用装饰器改进“策略”模式157

7.4 变量作用域规则159

7.5 闭包161

7.6 nonlocal声明164

7.7 实现一个简单的装饰器165

7.8 标准库中的装饰器168

7.8.1 使用functools.lru_cache做备忘168

7.8.2 单分派泛函数170

7.9 叠放装饰器172

7.10 参数化装饰器173

7.10.1 一个参数化的注册装饰器173

7.10.2 参数化clock装饰器175

7.11 本章小结177

7.12 延伸阅读178

第四部分 面向对象惯用法182

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

8.1 变量不是盒子183

8.2 标识、相等性和别名184

8.2.1 在==和is之间选择185

8.2.2 元组的相对不可变性186

8.3 默认做浅复制187

8.4 函数的参数作为引用时190

8.4.1 不要使用可变类型作为参数的默认值191

8.4.2 防御可变参数193

8.5 del和垃圾回收195

8.6 弱引用196

8.6.1 WeakValueDictionary简介197

8.6.2 弱引用的局限199

8.7 Python对不可变类型施加的把戏199

8.8 本章小结201

8.9 延伸阅读201

第9章 符合Python风格的对象205

9.1 对象表示形式206

9.2 再谈向量类206

9.3 备选构造方法208

9.4 classmethod与staticmethod209

9.5 格式化显示210

9.6 可散列的Vector2d213

9.7 Python的私有属性和“受保护的”属性218

9.8 使用__slots__类属性节省空间220

9.9 覆盖类属性222

9.10 本章小结224

9.11 延伸阅读225

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

10.1 Vector类:用户定义的序列类型230

10.2 Vector类第1版:与Vector2d类兼容230

10.3 协议和鸭子类型232

10.4 Vector类第2版:可切片的序列233

10.4.1 切片原理234

10.4.2 能处理切片的__getitem__方法236

10.5 Vector类第3版:动态存取属性237

10.6 Vector类第4版:散列和快速等值测试240

10.7 Vector类第5版:格式化244

10.8 本章小结251

10.9 延伸阅读251

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

11.1 Python文化中的接口和协议257

11.2 Python喜欢序列258

11.3 使用猴子补丁在运行时实现协议260

11.4 Alex Martelli的水禽262

11.5 定义抽象基类的子类266

11.6 标准库中的抽象基类267

11.6.1 collections.abc模块中的抽象基类267

11.6.2 抽象基类的数字塔269

11.7 定义并使用一个抽象基类270

11.7.1 抽象基类句法详解273

11.7.2 定义Tombola抽象基类的子类274

11.7.3 Tombola的虚拟子类276

11.8 Tombola子类的测试方法278

11.9 Python使用register的方式281

11.10 鹅的行为有可能像鸭子281

11.11 本章小结283

11.12 延伸阅读284

第12章 继承的优缺点289

12.1 子类化内置类型很麻烦289

12.2 多重继承和方法解析顺序292

12.3 多重继承的真实应用296

12.4 处理多重继承298

12.5 一个现代示例:Django通用视图中的混入301

12.6 本章小结304

12.7 延伸阅读304

第13章 正确重载运算符307

13.1 运算符重载基础308

13.2 一元运算符308

13.3 重载向量加法运算符+310

13.4 重载标量乘法运算符*315

13.5 众多比较运算符318

13.6 增量赋值运算符321

13.7 本章小结325

13.8 延伸阅读326

第五部分 控制流程330

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

14.1 Sentence类第1版:单词序列331

14.2 可迭代的对象与迭代器的对比334

14.3 Sentence类第2版:典型的迭代器337

14.4 Sentence类第3版:生成器函数339

14.5 Sentence类第4版:惰性实现343

14.6 Sentence类第5版:生成器表达式344

14.7 何时使用生成器表达式345

14.8 另一个示例:等差数列生成器346

14.9 标准库中的生成器函数349

14.10 Python 3.3 中新出现的句法:yield from357

14.11 可迭代的归约函数358

14.12 深入分析iter函数359

14.13 案例分析:在数据库转换工具中使用生成器360

14.14 把生成器当成协程362

14.15 本章小结362

14.16 延伸阅读363

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

15.1 先做这个,再做那个:if语句之外的else块369

15.2 上下文管理器和with块370

15.3 contextlib模块中的实用工具374

15.4 使用@contextmanager375

15.5 本章小结378

15.6 延伸阅读378

第16章 协程381

16.1 生成器如何进化成协程382

16.2 用作协程的生成器的基本行为382

16.3 示例:使用协程计算移动平均值385

16.4 预激协程的装饰器386

16.5 终止协程和异常处理388

16.6 让协程返回值391

16.7 使用yield from393

16.8 yield from的意义398

16.9 使用案例:使用协程做离散事件仿真403

16.9.1 离散事件仿真简介403

16.9.2 出租车队运营仿真404

16.10 本章小结410

16.11 延伸阅读411

第17章 使用期物处理并发416

17.1 示例:网络下载的三种风格416

17.1.1 依序下载的脚本418

17.1.2 使用concurrent.futures模块下载420

17.1.3 期物在哪里421

17.2 阻塞型I/O和GIL424

17.3 使用concurrent.futures模块启动进程424

17.4 实验Executor.map方法426

17.5 显示下载进度并处理错误429

17.5.1 flags2系列示例处理错误的方式433

17.5.2 使用futures.as_completed函数435

17.5.3 线程和多进程的替代方案437

17.6 本章小结437

17.7 延伸阅读438

第18章 使用asyncio包处理并发442

18.1 线程与协程对比443

18.1.1 asyncio.Future:故意不阻塞448

18.1.2 从期物、任务和协程中产出449

18.2 使用asyncio和aiohttp包下载450

18.3 避免阻塞型调用454

18.4 改进asyncio下载脚本456

18.4.1 使用asyncio.as_completed函数456

18.4.2 使用Executor对象,防止阻塞事件循环461

18.5 从回调到期物和协程462

18.6 使用asyncio包编写服务器466

18.6.1 使用asyncio包编写TCP服务器467

18.6.2 使用aiohttp包编写Web服务器471

18.6.3 更好地支持并发的智能客户端474

18.7 本章小结475

18.8 延伸阅读476

第六部分 元编程482

第19章 动态属性和特性482

19.1 使用动态属性转换数据483

19.1.1 使用动态属性访问JSON类数据485

19.1.2 处理无效属性名487

19.1.3 使用__new__方法以灵活的方式创建对象488

19.1.4 使用shelve模块调整OSCON数据源的结构490

19.1.5 使用特性获取链接的记录493

19.2 使用特性验证属性498

19.2.1 LineItem类第1版:表示订单中商品的类498

19.2.2 LineItem类第2版:能验证值的特性499

19.3 特性全解析500

19.3.1 特性会覆盖实例属性501

19.3.2 特性的文档503

19.4 定义一个特性工厂函数504

19.5 处理属性删除操作506

19.6 处理属性的重要属性和函数507

19.6.1 影响属性处理方式的特殊属性507

19.6.2 处理属性的内置函数508

19.6.3 处理属性的特殊方法509

19.7 本章小结510

19.8 延伸阅读510

第20章 属性描述符514

20.1 描述符示例:验证属性514

20.1.1 LineItem类第3版:一个简单的描述符515

20.1.2 LineItem类第4版:自动获取储存属性的名称519

20.1.3 LineItem类第5版:一种新型描述符524

20.2 覆盖型与非覆盖型描述符对比526

20.2.1 覆盖型描述符528

20.2.2 没有__get__方法的覆盖型描述符529

20.2.3 非覆盖型描述符530

20.2.4 在类中覆盖描述符531

20.3 方法是描述符531

20.4 描述符用法建议533

20.5 描述符的文档字符串和覆盖删除操作534

20.6 本章小结535

20.7 延伸阅读536

第21章 类元编程538

21.1 类工厂函数539

21.2 定制描述符的类装饰器541

21.3 导入时和运行时比较543

21.4 元类基础知识547

21.5 定制描述符的元类552

21.6 元类的特殊方法__prepare__554

21.7 类作为对象556

21.8 本章小结557

21.9 延伸阅读557

结语560

附录A 辅助脚本563

Python术语表588

作者简介600

关于封面600

热门推荐