立即下單

流暢的Python 第2版(全2冊) 深入理解Python語言核心特性及底層邏輯 Python進階指南 Python程序設計教程書
NT$ 1490  

流暢的Python 第2版(全2冊) 深入理解Python語言核心特性及底層邏輯 Python進階指南 Python程序設計教程書

免郵費 貨到付款 七天鑒賞期

流暢的Python 第2版(全2冊)


作  者:(巴西)盧西亞諾·拉馬略 著 安道 譯


出 版 社:人民郵電出版社


出版日期:2023年04月01日


頁  數:772


裝  幀:平裝


ISBN:9787115612366


主編推薦

一、領域好書 【領域好書】Python 進階指南,精通 Python 繞不開的推薦作品 【好評如潮】Amazon 4.7 星評,豆瓣評分 9.4,近 8 萬讀者學習 【作者資深】25 年一線研發經驗,PSF(Python軟件基金會)成員 二、內容精良 【知識聚焦】專注 Python 核心特性和標準庫,助你掌握語言底層邏輯 【通俗易讀】近 500 段代碼示例 + 多圖多表,文筆詼諧,語言流暢 【Pythonic】寫簡潔、流暢、地道的 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

21.5使用asyncio和HTTPX 601

21.5.1原生協程的秘密:默默無聞的生成器602

21.5.2“不成功便成仁”問題603

21.6異步上下文管理器603

21.7增強asyncio版 腳本的功能605

21.7.1使用asyncio. as_completed和一個線程605

21.7.2使用信號量請求607

21.7.3每次 發起多個請求610

21.8把任務委託給執行器612

21.9使用asyncio編寫服務器613

21.9.1一個FastAPIWeb服務614

21.9.2一個使用asyncio編寫的TCP服務器617

21.10異步迭代和異步可迭代對象622

21.10.1異步生成器函數623

21.10.2異步生成器表達式和異步推導式627

21.11asyncio之外的異步世界:Curio629

21.12異步對象的類型提示631

21.13異步原理與陷阱632

21.13.1阻塞型調用導致漫長等待633

21.13.2I/O密集型系統的誤區633

21.13.3繞開CPU密集型陷阱633

21.14本章小結634

21.15延伸閱讀635

第五部分元編程

第22章動態屬性和特性641

22.1本章新增內容642

22.2使用動態屬性轉換數據642

22.2.1使用動態屬性訪問JSON類數據643

22.2.2處理無效屬性名646

22.2.3使用__new__方法靈活創建對象647

22.3計算特性649

22.3.1第1步:數據驅動屬性創建650

22.3.2第2步:通過特性獲取鏈接的記錄651

22.3.3第3步:用特性覆蓋現有屬性654

22.3.4第4步:自己實現特性緩存655

22.3.5第5步:使用functools緩存特性656

22.4使用特性驗證屬性658

22.4.1LineItem類第1版:表示訂單中商品的類658

22.4.2LineItem類第2版:能驗證值的特性659

22.5特性全解析660

22.5.1特性覆蓋實例屬性661

22.5.2特性的文檔663

22.6定義一個特性工廠函數664

22.7處理屬性刪除操作666

22.8處理屬性的重要屬性和函數667

22.8.1影響屬性處理方式的特殊屬性667

22.8.2處理屬性的內置函數668

22.8.3處理屬性的特殊方法668

22.9本章小結669

22.10延伸閱讀670

第23章屬性描述符674

23.1本章新增內容675

23.2描述符示例:屬性驗證675

23.2.1LineItem類第3版:一個簡單的描述符675

23.2.2LineItem類第4版:為儲存屬性自動命名680

23.2.3LineItem類第5版:一種新型描述符681

23.3覆蓋型描述符與非覆蓋型描述符對比683

23.3.1覆蓋型描述符685

23.3.2沒有__get__方法的覆蓋型描述符686

23.3.3非覆蓋型描述符687

23.3.4覆蓋類中的描述符687

23.4方法是描述符688

23.5描述符用法建議690

23.6描述符的文檔字符串和覆蓋刪除操作691

23.7本章小結692

23.8延伸閱讀692

第24章類元編程695

24.1本章新增內容696

24.2身為對象的類696

24.3type:內置的類工廠函數697

24.4類工廠函數698

24.5引出__init_subclass__700

24.6使用類裝飾器增強類的功能706

24.7導入時和運行時比較708

24.8元類入門713

24.8.1元類如何定制類715

24.8.2一個友好的元類示例715

24.8.3元類求解時間實驗718

24.9使用元類實現Checked類722

24.10元類的實際運用726

24.10.1可簡化或代替元類的現代功能726

24.10.2元類是穩定的語言功能726

24.10.3一個類只能有一個元類726

24.10.4元類應作為實現細節727

24.11使用元類的__prepare__方法實現新穎的構思727

24.12小結729

24.13本章小結730

24.14延伸閱讀730

結語733


內容介紹

本書是Python領域備受推崇的經典作品,致力於幫助Python開發人員挖掘這門語言及相關程序庫的優秀特性,寫出簡潔、流暢、易讀、易維護,並且地道的Python代碼。本書著重講解Python語言所獨有的功能,助你成功進階為Python高手。第2版與時俱進,教你跳出舊有經驗,探索並運用地道的Python3功能。第2版主體內容分為五部分:數據結構、函數即對象、類和協議、控制流、元編程。每一部分都精彩紛呈,通過豐富的示例和細緻的講解,教你充分利用Python特性,寫出有效且現代的Python3代碼。對於所有想提升Python開發技能的讀者,本書不容錯過。

作者簡介

(巴西)盧西亞諾·拉馬略 著 安道 譯

【作者簡介】 盧西亞諾·拉馬略(Luciano Ramalho) Thoughtworks首席諮詢師、Python軟件基金會成員、巴西Python語言學習社區Python Brasil聯合創立人。擁有25年Python編程經驗,著有編程領域作品《流暢的Python》。 【譯者簡介】 安道 活躍的技術圖書譯者,譯有《流暢的Python》《Flask Web開發:基於Python的Web應用開發實戰》《Python網絡編程攻略》等圖書。

流暢的Python 第2版(全2冊) 深入理解Python語言核心特性及底層邏輯 Python進階指南 Python程序設計教程書
NT$1490
注: 我們會宅配送貨到您府上,請您注意查收。