流畅的Python图书
人气:33

流畅的Python

PSF研究员 知名PyCon演讲者心血之作 深入 对Python语言关键特性剖析到位 兼顾Python 3和Python 2
  • 所属分类:图书 >计算机/网络>程序设计>其他  
  • 作者:[巴西][卢西亚诺·拉马略]([Luciano] [Ramalho])
  • 产品参数:
  • 丛书名:--
  • 国际刊号:9787115454157
  • 出版社:人民邮电出版社
  • 出版时间:2017-04
  • 印刷时间:2017-04-01
  • 版次:1
  • 开本:16开
  • 页数:--
  • 纸张:胶版纸
  • 包装:平装-胶订
  • 套装:

内容简介

流畅的Python 致力于帮助Python开发人员挖掘这门语言及相关程序库的品质特性,避免重复劳动,同时写出简洁、流畅、易读、易维护,并且具有地道Python风格的代码。流畅的Python 尤其深入探讨了Python语言的高级用法,涵盖数据结构、Python风格的对象、并行与并发,以及元编程等不同的方面。

编辑推荐

流畅的Python 由奋战在Python开发一线近20年的Luciano Ramalho执笔,Victor Stinner、Alex Martelli等Python大咖担纲技术审稿人,从语言设计层面剖析编程细节,兼顾Python 3和Python 2,告诉你Python中不亲自动手实践就无法理解的语言陷阱成因和解决之道,教你写出风格地道的Python代码。 ● Python数据模型:理解为什么特殊方法是对象行为一致的关键。 ● 数据结构:充分利用内置类型,理解Unicode文本和字节二象性。 ● 把函数视作对象:把Python函数视作一等对象,并了解这一点对流行的设计模式的影响。 ● 面向对象习惯用法:通过构建类学习引用、可变性、接口、运算符重载和多重继承。 ● 控制流程:学习使用上下文管理器、生成器、协程,以及通过concurrent.futures和asyncio包实现的并发。 ● 元编程:理解特性、描述符、类装饰器和元类的工作原理。

作者简介

Luciano Ramalho,从1998年起就成为了Python程序员。他是Python软件基金会的成员,Python.pro.br(巴西的一家培训公司)的共同所有者,还是巴西diyi个众创空间Garoa Hacker Clube的联合创始人。他领导过多个软件开发团队,还在巴西的媒体、银行和政府部门教授Python课程。 [译者简介] 安道 专注于现代计算机技术的自由翻译,译有《Flask Web 开发》《Python 网络编程攻略》《Ruby on Rails 教程》等书。 个人网站:http: about.ac 。 吴珂 现为Airbnb公司软件工程师,所在团队主要负责开发和维护各类可伸缩、高性能服务,并在Airbnb内推广面向服务的系统架构。在分布式系统、云存储服务和跨平台SDK开发,以及大规模数据处理等方面有多年经验。

目录

前言 xvii

及时部分序幕

第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

第二部分数据结构

第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.7list.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.3NumPy 和 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.1defaultdict :处理找不到的键的一个选择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.9dict 和 set 的背后73

3.9.1一个关于效率的实验74

3.9.2字典中的散列表75

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

3.9.4set 的实现以及导致的结果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.5BOM:有用的鬼符93

4.5处理文本文件94

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

4.6.1大小写折叠101

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

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

4.7Unicode 文本排序105

4.8Unicode 数据库108

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

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

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

4.10本章小结112

4.11延伸阅读113

第三部分把函数视作对象

第5 章 一等函数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.1operator 模块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.2Python 何时执行装饰器156

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

7.4变量作用域规则159

7.5闭包161

7.6nonlocal 声明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

第四部分面向对象惯用法

第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.5del 和垃圾回收195

8.6弱引用196

8.6.1WeakValueDictionary 简介197

8.6.2弱引用的局限199

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

8.8本章小结201

8.9延伸阅读201

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

9.1对象表示形式206

9.2再谈向量类206

9.3备选构造方法208

9.4classmethod 与 staticmethod209

9.5格式化显示210

9.6可散列的 Vector2d213

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

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

9.9覆盖类属性222

9.10本章小结224

9.11延伸阅读225

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

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

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

10.3协议和鸭子类型232

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

10.4.1切片原理234

10.4.2能处理切片的 __getitem__ 方法236

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

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

10.7Vector 类第 5 版:格式化244

10.8本章小结251

10.9延伸阅读251

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

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

11.2Python 喜欢序列258

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

11.4Alex Martelli 的水禽262

11.5定义抽象基类的子类266

11.6标准库中的抽象基类267

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

11.6.2抽象基类的数字塔269

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

11.7.1抽象基类句法详解273

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

11.7.3Tombola 的虚拟子类276

11.8Tombola 子类的测试方法278

11.9Python 使用 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

第五部分控制流程

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

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

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

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

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

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

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

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

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

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

14.10Python 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.3contextlib 模块中的实用工具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.8yield 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.1flags2 系列示例处理错误的方式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.1asyncio.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

第六部分元编程

第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.1LineItem 类第 1 版:表示订单中商品的类498

19.2.2LineItem 类第 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.1LineItem 类第 3 版:一个简单的描述符515

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

20.1.3LineItem 类第 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

媒体评论

“很荣幸担任这本youxiu图书的技术审校。这本书能帮助很多中级Python程序员掌握这门语言,我也从中学到了相当多的知识!”——Alex Martelli,Python软件基金会成员 “对于想要扩充知识的中级和高级Python程序员来说,这本书是充满了实用编程技巧的宝藏。”——Daniel Greenfeld和Audrey Roy Greenfeld,Two Scoops of Django作者

网友评论(不代表本站观点)

来自一***子**的评论:

流畅的Python 包装不错。

2017-06-07 20:59:00
来自小苹果**的评论:

书很少,包装也不错

2017-11-17 00:32:33
来自无昵称**的评论:

goog.

2017-11-18 13:58:19
来自g***h(**的评论:

OK OK

2017-05-30 14:50:09
来自顽***(**的评论:

很不错的书

2017-06-06 14:15:33
来自超***(**的评论:

没啥好说的,好书。辣鸡当非要凑几个破字。

2017-06-16 15:49:37
来自k***e(**的评论:

很实用...

2017-07-06 08:50:39
来自***(匿**的评论:

这个商品还不错。

2017-07-14 08:10:11
来自a***r(**的评论:

???是书本身这样,还是快递弄得?

2017-07-24 14:44:25
来自无昵称**的评论:

python的上等书籍,值得好好研读。

2017-08-25 11:19:18
来自ausdruc**的评论:

适合有一定基础的同学看

2017-08-26 23:11:17
来自无昵称**的评论:

好……………

2017-09-16 14:22:02
来自无昵称**的评论:

第一次知道这本书的时候,还是在stackoverflow,看到本书作者的推荐。当时还是英文Early Release版的,读了前两章感觉非常不错。奈何 工作太忙,再者,英文读起来还是有些慢,就放弃了。现在出了中文版,果断买一本,也算是支持一下作者啦。翻译的也还不错,之前看过 安道 翻译的《 flask web 开发》,感觉这个译者也还挺靠谱。就贴书的照片了,质量还可以,当当的书老司机都懂,我也不多说了。

2017-09-17 10:59:46
来自匿名用**的评论:

刚买的新书,

2017-09-19 16:59:32
来自无昵称**的评论:

很好的书 适合有一定python基础的人

2017-09-21 22:17:48
来自世至其**的评论:

进阶级别的书籍

2017-10-08 13:16:44
来自青山老**的评论:

学习python的必读

2017-10-13 18:32:43
来自无昵称**的评论:

好书!!!心血之作!!!

2017-10-15 17:18:15
来自无昵称**的评论:

书是用薄膜封着的,所以没有啥折损的,这点不错。

2017-08-27 14:26:01
登录后即可发表评论

免责声明

更多相关图书
在线咨询