• 流畅的Python 第2版(全2册)
  • 流畅的Python 第2版(全2册)
  • 流畅的Python 第2版(全2册)
  • 流畅的Python 第2版(全2册)
  • 流畅的Python 第2版(全2册)
21年品牌 40万+商家 超1.5亿件商品

流畅的Python 第2版(全2册)

全新正版 极速发货

91.7 4.6折 199.8 全新

库存49件

广东广州
认证卖家担保交易快速发货售后保障

作者(巴西)卢西亚诺·拉马略

出版社人民邮电出版社

ISBN9787115612366

出版时间2023-04

装帧平装

开本16开

定价199.8元

货号1202838740

上书时间2024-07-02

曲奇书店

已实名 已认证 进店 收藏店铺

   商品详情   

品相描述:全新
商品描述
作者简介
【作者简介】

卢西亚诺·拉马略(Luciano Ramalho)

Thoughtworks首席咨询师、Python软件基金会成员、巴西Python语言学习社区Python Brasil联合创立人。拥有25年Python编程经验,著有编程领域作品《流畅的Python》。

【译者简介】

安道

活跃的技术图书译者,译有《流畅的Python》《Flask Web开发:基于Python的Web应用开发实战》《Python网络编程攻略》等图书。

目录
《流畅的Python.上册》

前言i

第一部分数据结构

第1章Python数据模型3

1.1本章新增内容4

1.2一摞Python风格的纸牌4

1.3特殊方法是如何使用的7

1.3.1模拟数值类型8

1.3.2字符串表示形式10

1.3.3自定义类型的布尔值11

1.3.4容器API12

1.4特殊方法概述13

1.5len为什么不是方法14

1.6本章小结14

1.7延伸阅读15

第2章丰富的序列17

2.1本章新增内容18

2.2内置序列类型概览18

2.3列表推导式和生成器表达式20

2.3.1列表推导式对可读性的影响20

2.3.2列表推导式与map和filter比较22

2.3.3笛卡儿积22

2.3.4生成器表达式23

2.4元组不仅仅是不可变列表24

2.4.1用作记录24

2.4.2用作不可变列表26

2.4.3列表和元组方法的比较27

2.5序列和可迭代对象拆包28

2.5.1使用*获取余下的项29

2.5.2在函数调用和序列字面量中使用*拆包29

2.5.3嵌套拆包30

2.6序列模式匹配31

2.7切片37

2.7.1为什么切片和区间排除最后一项38

2.7.2切片对象38

2.7.3多维切片和省略号39

2.7.4为切片赋值40

2.8使用+和*处理序列40

2.8.1构建嵌套列表41

2.8.2使用增量赋值运算符处理序列42

2.8.3一个+=运算符赋值谜题43

2.9list.sort与内置函数sorted45

2.10当列表不适用时46

2.10.1数组47

2.10.2memoryview49

2.10.3NumPy50

2.10.4双端队列和其他队列52

2.11本章小结55

2.12延伸阅读56

第3章字典和集合59

3.1本章新增内容60

3.2字典的现代句法60

3.2.1字典推导式60

3.2.2映射拆包61

3.2.3使用|合并映射61

3.3使用模式匹配处理映射62

3.4映射类型的标准API64

3.4.1“可哈希”指什么64

3.4.2常用映射方法概述65

3.4.3插入或更新可变的值67

3.5自动处理缺失的键69

3.5.1defaultdict:处理缺失键的另一种选择69

3.5.2__missing__方法70

3.5.3标准库对__missing__方法的使用不一致72

3.6dict的变体73

3.6.1collections.OrderedDict73

3.6.2collections.ChainMap73

3.6.3collections.Counter74

3.6.4shelve.Shelf74

3.6.5子类应继承UserDict而不是dict75

3.7不可变映射76

3.8字典视图77

3.9dict的实现方式对实践的影响78

3.10集合论79

3.10.1set字面量80

3.10.2集合推导式81

3.11集合的实现方式对实践的影响81

3.12字典视图的集合运算84

3.13本章小结85

3.14延伸阅读86

第4章Unicode文本和字节序列88

4.1本章新增内容89

4.2字符问题89

4.3字节概要90

4.4基本的编码解码器92

4.5处理编码和解码问题93

4.5.1处理UnicodeEncodeError94

4.5.2处理UnicodeDecodeError95

4.5.3加载模块时编码不符合预期抛出的SyntaxError95

4.5.4如何找出字节序列的编码96

4.5.5BOM:有用的鬼符97

4.6处理文本文件98

4.7为了正确比较而规范化Unicode字符串105

4.7.1大小写同一化107

4.7.2规范化文本匹配的实用函数108

4.7.3特别“规范化”:去掉变音符109

4.8Unicode文本排序111

4.9Unicode数据库113

4.9.1按名称查找字符114

4.9.2字符的数值意义115

4.10支持str和bytes的双模式API117

4.10.1正则表达式中的str和bytes117

4.10.2os函数中的str和bytes118

4.11本章小结119

4.12延伸阅读119

第5章数据类构建器123

5.1本章新增内容124

5.2数据类构建器概述124

5.3典型的具名元组128

5.4带类型的具名元组130

5.5类型提示入门131

5.5.1运行时没有作用131

5.5.2变量注解句法132

5.5.3变量注解的意义132

5.6@dataclass详解135

5.6.1字段选项136

5.6.2初始化后处理139

5.6.3带类型的类属性140

5.6.4初始化不作为字段的变量141

5.6.5@dataclass示例:都柏林核心模式142

5.7数据类导致代码异味144

5.7.1把数据类用作脚手架145

5.7.2把数据类用作中间表述145

5.8模式匹配类实例145

5.8.1简单类模式145

5.8.2关键字类模式146

5.8.3位置类模式147

5.9本章小结148

5.10延伸阅读149

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

6.1本章新增内容152

6.2变量不是盒子153

6.3同一性、相等性和别名154

6.3.1在==和is之间选择156

6.3.2元组的相对不可变性157

6.4默认做浅拷贝157

6.5函数的参数是引用时161

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

6.5.2防御可变参数164

6.6del和垃圾回收165

6.7Python对不可变类型施加的把戏167

6.8本章小结168

6.9延伸阅读169

第二部分函数即对象

第7章函数是一等对象175

7.1本章新增内容176

7.2把函数视为对象176

7.3高阶函数177

7.4匿名函数179

7.59种可调用对象180

7.6用户定义的可调用类型181

7.7从位置参数到仅限关键字参数182

7.8支持函数式编程的包184

7.8.1operator模块184

7.8.2使用functools.partial冻结参数187

7.9本章小结189

7.10延伸阅读189

第8章函数中的类型提示192

8.1本章新增内容193

8.2关于渐进式类型193

8.3渐进式类型实践194

8.3.1Mypy初体验195

8.3.2让Mypy严格要求195

8.3.3参数的默认值196

8.3.4使用None表示默认值198

8.4类型由受支持的操作定义198

8.5注解中可用的类型202

8.5.1Any类型203

8.5.2简单的类型和类205

8.5.3Optional类型和Union类型205

8.5.4泛化容器207

8.5.5元组类型209

8.5.6泛化映射211

8.5.7抽象基类212

8.5.8Iterable214

8.5.9参数化泛型和TypeVar215

8.5.10静态协议218

8.5.11Callable223

8.5.12NoReturn225

8.6注解仅限位置参数和变长参数225

8.7类型不完美,测试须全面226

8.8本章小结227

8.9延伸阅读228

第9章装饰器和闭包232

9.1本章新增内容233

9.2装饰器基础知识233

9.3Python何时执行装饰器234

9.4注册装饰器235

9.5变量作用域规则236

9.6闭包239

9.7nonlocal声明241

9.8实现一个简单的装饰器243

9.9标准库中的装饰器245

9.9.1使用functools.cache做备忘245

9.9.2使用lru_cache248

9.9.3单分派泛化函数249

9.10参数化装饰器252

9.10.1一个参数化注册装饰器253

9.10.2参数化clock装饰器254

9.10.3基于类的clock装饰器256

9.11本章小结257

9.12延伸阅读258

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

10.1本章新增内容262

10.2案例分析:重构策略模式262

10.2.1经典的策略模式262

10.2.2使用函数实现策略模式265

10.2.3选择很好策略的简单方式268

10.2.4找出一个模块中的全部策略269

10.3使用装饰器改进策略模式270

10.4命令模式272

10.5本章小结273

10.6延伸阅读274

第三部分类和协议

第11章符合Python风格的对象279

11.1本章新增内容280

11.2对象表示形式280

11.3再谈向量类281

11.4备选构造函数283

11.5classmethod与staticmethod283

11.6格式化显示284

11.7可哈希的Vector2d287

11.8支持位置模式匹配289

11.9第3版Vector2d的完整代码290

11.10Python私有属性和“受保护”的属性294

11.11使用__slots__节省空间295

11.11.1简单衡量__slot__节省的内存297

11.11.2总结__slots__的问题298

11.12覆盖类属性299

11.13本章小结300

11.14延伸阅读301

第12章序列的特殊方法305

12.1本章新增内容305

12.2Vector类:用户定义的序列类型306

12.3Vector类第1版:与Vector2d类兼容306

12.4协议和鸭子类型308

12.5Vector类第2版:可切片的序列309

12.5.1切片原理310

12.5.2能处理切片的__getitem__方法312

12.6Vector类第3版:动态存取属性313

12.7Vector类第4版:哈希和快速等值测试316

12.8Vector类第5版:格式化321

12.9本章小结327

12.10延伸阅读328

第13章接口、协议和抽象基类332

13.1类型图333

13.2本章新增内容333

13.3两种协议334

13.4利用鸭子类型编程335

13.4.1Python喜欢序列335

13.4.2使用猴子补丁在运行时实现协议337

13.4.3防御性编程和“快速失败”339

13.5大鹅类型340

13.5.1子类化一个抽象基类344

13.5.2标准库中的抽象基类345

13.5.3定义并使用一个抽象基类347

13.5.4抽象基类句法详解351

13.5.5子类化抽象基类Tombola352

13.5.6抽象基类的虚拟子类354

13.5.7register的实际使用356

13.5.8使用抽象基类实现结构类型356

13.6静态协议358

13.6.1为double函数添加类型提示358

13.6.2运行时可检查的静态协议359

13.6.3运行时协议检查的局限性362

13.6.4支持静态协议363

13.6.5设计一个静态协议364

13.6.6协议设计很好实践366

13.6.7扩展一个协议366

13.6.8numbers模块中的抽象基类和Numeric协议367

13.7本章小结369

13.8延伸阅读370

第14章继承:瑕瑜互见374

14.1本章新增内容375

14.2super()函数375

14.3子类化内置类型很麻烦377

14.4多重继承和方法解析顺序379

14.5混入类384

14.6多重继承的实际运用385

14.6.1抽象基类也是混入类386

14.6.2ThreadingMixIn和ForkingMixIn386

14.6.3Django泛化视图混入类387

14.6.4Tkinter中的多重继承390

14.7应对多重继承391

14.7.1优先使用对象组合,而不是类继承391

14.7.2理解不同情况下使用继承的原因392

14.7.3使用抽象基类显式表示接口392

14.7.4通过混入明确重用代码392

14.7.5为用户提供聚合类392

14.7.6仅子类化为子类化设计的类393

14.7.7避免子类化具体类393

14.7.8Tkinter的好、不好以及令人厌恶的方面394

14.8本章小结394

14.9延伸阅读395

第15章类型提示进阶399

15.1本章新增内容399

15.2重载的签名400

15.2.1重载max函数401

15.2.2重载max函数的启示405

15.3TypedDict405

15.4类型校正411

15.5在运行时读取类型提示413

15.5.1注解在运行时的问题414

15.5.2解决这个问题416

15.6实现一个泛化类417

15.7型变419

15.7.1一个不变的自动售货机419

15.7.2一个协变的自动售货机421

15.7.3一个逆变的垃圾桶421

15.7.4型变总结423

15.8实现泛化静态协议425

15.9本章小结426

15.10延伸阅读427

第16章运算符重载431

16.1本章新增内容432

16.2运算符重载入门432

16.3一元运算符433

16.4重载向量加法运算符+435

16.5重载标量乘法运算符*439

16.6把@当作中缀运算符使用441

16.7算术运算符总结443

16.8众多比较运算符443

16.9增量赋值运算符446

16.10本章小结450

16.11延伸阅读451

《流畅的Python.下册》

第四部分控制流

第17章迭代器、生成器和经典协程457

17.1本章新增内容458

17.2单词序列458

17.3序列可以迭代的原因:iter函数459

17.4可迭代对象与迭代器462

17.5为Sentence类实现__iter__方法465

17.5.1Sentence类第2版:经典迭代器465

17.5.2不要把可迭代对象变成迭代器466

17.5.3Sentence类第3版:生成器函数467

17.5.4生成器的工作原理468

17.6惰性实现版本470

17.6.1Sentence类第4版:惰性生成器470

17.6.2Sentence类第5版:惰性生成器表达式471

17.7何时使用生成器表达式473

17.8一个等差数列生成器474

17.9标准库中的生成器函数477

17.10可迭代的归约函数486

17.11yieldfrom:从子生成器中产出487

17.11.1重新实现chain488

17.11.2遍历树状结构489

17.12泛化可迭代类型493

17.13经典协程495

17.13.1示例:使用协程计算累计平均值496

17.13.2让协程返回一个值498

17.13.3经典协程的泛化类型提示501

17.14本章小结502

17.15延伸阅读503

第18章with、match和else块507

18.1本章新增内容508

18.2上下文管理器和with块508

18.2.1contextlib包中的实用工具511

18.2.2使用@contextmanager512

18.3案例分析:lis.py中的模式匹配516

18.3.1Scheme句法516

18.3.2导入和类型517

18.3.3解析器518

18.3.4环境519

18.3.5REPL521

18.3.6求值函数522

18.3.7实现闭包的Procedure类529

18.3.8使用OR模式529

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

18.5本章小结532

18.6延伸阅读533

第19章Python并发模型537

19.1本章新增内容538

19.2全景概览538

19.3术语定义539

19.4一个演示并发的“HelloWorld”示例541

19.4.1使用线程实现旋转指针541

19.4.2使用进程实现旋转指针544

19.4.3使用协程实现旋转指针545

19.4.4对比几版supervisor函数548

19.5GIL真正的影响549

19.6自建进程池552

19.6.1基于进程的方案554

19.6.2理解用时554

19.6.3利用多核进行素数检测的程序代码555

19.6.4实验:进程数多一些或少一些558

19.6.5基于线程的方案并不可靠559

19.7多核世界中的Python559

19.7.1系统管理560

19.7.2数据科学560

19.7.3服务器端Web和移动开发561

19.7.4WSGI应用程序服务器563

19.7.5分布式任务队列564

19.8本章小结565

19.9延伸阅读566

19.9.1使用线程和进程实现并发566

19.9.2GIL567

19.9.3标准库之外的并发世界567

19.9.4Python之外的并发和伸缩世界569

第20章并发执行器572

20.1本章新增内容572

20.2并发网络下载573

20.2.1依序下载的脚本574

20.2.2使用concurrent.futures模块下载576

20.2.3future对象在哪里577

20.3使用concurrent.futures启动进程580

20.4实验Executor.map方法583

20.5显示下载进度并处理错误585

20.5.1flags2系列示例处理错误的方式589

20.5.2使用futures.as_completed函数591

20.6本章小结593

20.7延伸阅读594

第21章异步编程596

21.1本章新增内容597

21.2一些定义597

21.3一个asyncio示例:探测域名598

21.4新概念:可异步调用对象600

—  没有更多了  —

以下为对购买帮助不大的评价

此功能需要访问孔网APP才能使用
暂时不用
打开孔网APP