流畅的python 第2版(全2册) 编程语言 (巴西)卢西亚诺·拉马略 新华正版
¥
95.7
4.8折
¥
199.8
全新
库存172件
作者(巴西)卢西亚诺·拉马略
出版社人民邮电出版社
ISBN9787115612366
出版时间2023-04
版次1
装帧平装
开本16
页数772页
字数1056千字
定价199.8元
货号xhwx_1202838740
上书时间2024-09-25
商品详情
- 品相描述:全新
-
正版特价新书
- 商品描述
-
主编:
一、领域好书
【领域好书】python 指南,精通 python 绕不开的作品
【如潮】 4.7 星评,豆瓣评分 9.4,近 8 万读者学
【作者】25 年一线研发经验,f(python软件会)成员
二、内容精良
【知识聚焦】专注 python 核心特和标准库,助你掌握语言底层逻辑
【通俗易读】近 500 段代码示例 多图多表,文笔诙谐,语言流畅
【pythonic】写简洁、流畅、地道的 python 代码,飙升编程效率
三、新版特
【优化升级】内容更新率超过 3 成,基于 python 3.10 新升级
【分上下册】新版拆分为上下两册(480/292页),更方便更易读
目录:
《流畅的python.上册》
前言i
部分数据结构
章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
0章使用一等函数实现设计模式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
第三部分类和协议
1章符合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
2章序列的特殊方法305
12.1本章新增内容305
12.2vector类:用户定义的序列类型306
12.3vector类版:与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
3章接、协议和抽象基类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
4章继承:瑕瑜互见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.2threamin和forkingmin386
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
5章类型提示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
6章运算符重载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.下册》
第四部分控制流
7章迭代器、生成器和经典协程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
8章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
9章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_pleted函数591
20.6本章小结593
20.7延伸阅读594
第21章异步编程596
21.1本章新增内容597
21.2一些定义597
21.3一个asyncio示例:探测域名598
21.4新概念:可异步调用对象600
21.5使用asyncio和x下载601
21.5.
— 没有更多了 —
以下为对购买帮助不大的评价