注冊(cè) | 登錄讀書(shū)好,好讀書(shū),讀好書(shū)!
讀書(shū)網(wǎng)-DuShu.com
當(dāng)前位置: 首頁(yè)出版圖書(shū)科學(xué)技術(shù)計(jì)算機(jī)/網(wǎng)絡(luò)軟件與程序設(shè)計(jì)Python工匠:案例、技巧與工程實(shí)踐(基于Python 3.8,實(shí)現(xiàn)從入門(mén)到工匠的躍遷)

Python工匠:案例、技巧與工程實(shí)踐(基于Python 3.8,實(shí)現(xiàn)從入門(mén)到工匠的躍遷)

Python工匠:案例、技巧與工程實(shí)踐(基于Python 3.8,實(shí)現(xiàn)從入門(mén)到工匠的躍遷)

定 價(jià):¥99.80

作 者: 朱雷(@piglei) 著
出版社: 人民郵電出版社
叢編項(xiàng):
標(biāo) 簽: 暫缺

購(gòu)買(mǎi)這本書(shū)可以去


ISBN: 9787115584045 出版時(shí)間: 2022-03-01 包裝: 平裝
開(kāi)本: 16開(kāi) 頁(yè)數(shù): 400 字?jǐn)?shù):  

內(nèi)容簡(jiǎn)介

  本書(shū)基于廣受好評(píng)的“Python工匠”系列開(kāi)源文章。全書(shū)從工程實(shí)踐角度出發(fā),通過(guò)剖析核心知識(shí)、展示典型案例與總結(jié)實(shí)用技巧,幫助大家系統(tǒng)進(jìn)階Python,寫(xiě)好工程代碼,做好實(shí)踐項(xiàng)目。本書(shū)共計(jì)13章,分為五大部分:變量與基礎(chǔ)類(lèi)型、語(yǔ)法結(jié)構(gòu)、函數(shù)與裝飾器、面向?qū)ο缶幊獭⒖偨Y(jié)與延伸,涵蓋Python編程的方方面面。本書(shū)的寫(xiě)作方式別具一格,核心知識(shí)點(diǎn)都會(huì)通過(guò)三大板塊來(lái)闡述:基礎(chǔ)知識(shí)、案例故事、編程建議。其中基礎(chǔ)知識(shí)幫助大家快速回顧Python基礎(chǔ);案例故事由作者經(jīng)歷的編程項(xiàng)目與案例改編而來(lái),兼具實(shí)戰(zhàn)性與趣味性;編程建議以大家喜聞樂(lè)見(jiàn)的條目式知識(shí)點(diǎn)呈現(xiàn),短小精悍,可直接應(yīng)用于自己的編程實(shí)踐中。

作者簡(jiǎn)介

  朱雷(@piglei) 就職于騰訊IEG技術(shù)運(yùn)營(yíng)部,現(xiàn)任藍(lán)鯨工具PaaS平臺(tái)負(fù)責(zé)人,參與和主導(dǎo)了包括“藍(lán)鯨工具PaaS平臺(tái)”在內(nèi)的諸多大型項(xiàng)目,從事后端開(kāi)發(fā)與架構(gòu)設(shè)計(jì)十余年,曾就職于搜狐、趕集網(wǎng)。 精通Python語(yǔ)言特性,對(duì)如何開(kāi)發(fā)高質(zhì)量的大型Python工程有獨(dú)到見(jiàn)解。 從2016年開(kāi)始創(chuàng)作“Python工匠”系列開(kāi)源技術(shù)文章,其GitHub Star數(shù)超過(guò)4K,被“騰訊技術(shù)工程”等多家媒體全系列轉(zhuǎn)載,收獲諸多好評(píng)。 GitHub賬號(hào):piglei。公眾號(hào):piglei。

圖書(shū)目錄

前言 v

第 1章 變量與注釋 1

1.1 基礎(chǔ)知識(shí) 2

1.1.1 變量常見(jiàn)用法 2

1.1.2 給變量注明類(lèi)型 4

1.1.3 變量命名原則 6

1.1.4 注釋基礎(chǔ)知識(shí) 11

1.2 案例故事 14

奇怪的冒泡排序算法 15

1.3 編程建議 17

1.3.1 保持變量的一致性 18

1.3.2 變量定義盡量靠近使用 18

1.3.3 定義臨時(shí)變量提升可讀性 20

1.3.4 同一作用域內(nèi)不要有太多變量 21

1.3.5 能不定義變量就別定義 22

1.3.6 不要使用locals() 23

1.3.7 空行也是一種“注釋” 24

1.3.8 先寫(xiě)注釋?zhuān)髮?xiě)代碼 25

1.4 總結(jié) 26

第 2章 數(shù)值與字符串 28

2.1 基礎(chǔ)知識(shí) 29

2.1.1 數(shù)值基礎(chǔ) 29

2.1.2 布爾值其實(shí)也是數(shù)字 31

2.1.3 字符串常用操作 31

2.1.4 不常用但特別好用的字符串方法 34

2.1.5 字符串與字節(jié)串 36

2.2 案例故事 39

2.2.1 代碼里的“密碼” 39

2.2.2 別輕易成為SQL語(yǔ)句“大師” 41

2.3 編程建議 44

2.3.1 不必預(yù)計(jì)算字面量表達(dá)式 44

2.3.2 使用特殊數(shù)字:“無(wú)窮大” 46

2.3.3 改善超長(zhǎng)字符串的可讀性 47

2.3.4 別忘了以r開(kāi)頭的字符串內(nèi)置方法 48

2.3.5 不要害怕字符串拼接 49

2.4 總結(jié) 50

第3章 容器類(lèi)型 53

3.1 基礎(chǔ)知識(shí) 54

3.1.1 列表常用操作 54

3.1.2 理解列表的可變性 56

3.1.3 常用元組操作 60

3.1.4 具名元組 61

3.1.5 字典常用操作 63

3.1.6 認(rèn)識(shí)字典的有序性與無(wú)序性 66

3.1.7 集合常用操作 68

3.1.8 了解對(duì)象的可哈希性 71

3.1.9 深拷貝與淺拷貝 72

3.2 案例故事 74

分析網(wǎng)站訪問(wèn)日志 75

3.3 編程建議 83

3.3.1 用按需返回替代容器 83

3.3.2 了解容器的底層實(shí)現(xiàn) 86

3.3.3 掌握如何快速合并字典 89

3.3.4 使用有序字典去重 91

3.3.5 別在遍歷列表時(shí)同步修改 92

3.3.6 編寫(xiě)推導(dǎo)式的兩個(gè)“不要” 92

3.3.7 讓函數(shù)返回NamedTuple 94

3.4 總結(jié) 95

第4章 條件分支控制流 97

4.1 基礎(chǔ)知識(shí) 98

4.1.1 分支慣用寫(xiě)法 98

4.1.2 修改對(duì)象的布爾值 101

4.1.3 與None比較時(shí)使用is運(yùn)算符 103

4.2 案例故事 105

消失的分支 105

4.3 編程建議 112

4.3.1 盡量避免多層分支嵌套 112

4.3.2 別寫(xiě)太復(fù)雜的條件表達(dá)式 114

4.3.3 盡量降低分支內(nèi)代碼的相似性 115

4.3.4 使用“德摩根定律” 116

4.3.5 使用all()/any()函數(shù)構(gòu)建條件表達(dá)式 117

4.3.6 留意and和or的運(yùn)算優(yōu)先級(jí) 118

4.3.7 避開(kāi)or運(yùn)算符的陷阱 118

4.4 總結(jié) 119

第5章 異常與錯(cuò)誤處理 121

5.1 基礎(chǔ)知識(shí) 122

5.1.1 優(yōu)先使用異常捕獲 122

5.1.2 try語(yǔ)句常用知識(shí) 124

5.1.3 拋出異常,而不是返回錯(cuò)誤 127

5.1.4 使用上下文管理器 129

5.2 案例故事 133

5.2.1 提前崩潰也挺好 133

5.2.2 異常與抽象一致性 136

5.3 編程建議 139

5.3.1 不要隨意忽略異常 139

5.3.2 不要手動(dòng)做數(shù)據(jù)校驗(yàn) 140

5.3.3 拋出可區(qū)分的異?!?42

5.3.4 不要使用assert來(lái)檢查參數(shù)合法性 144

5.3.5 無(wú)須處理是最好的錯(cuò)誤處理 145

5.4 總結(jié) 149

第6章 循環(huán)與可迭代對(duì)象 151

6.1 基礎(chǔ)知識(shí) 152

6.1.1 迭代器與可迭代對(duì)象 152

6.1.2 修飾可迭代對(duì)象優(yōu)化循環(huán) 158

6.1.3 使用itertools模塊優(yōu)化循環(huán) 160

6.1.4 循環(huán)語(yǔ)句的else關(guān)鍵字 162

6.2 案例故事 164

數(shù)字統(tǒng)計(jì)任務(wù) 164

6.3 編程建議 168

6.3.1 中斷嵌套循環(huán)的正確方式 168

6.3.2 巧用next()函數(shù) 170

6.3.3 當(dāng)心已被耗盡的迭代器 171

6.4 總結(jié) 172

第7章 函數(shù) 174

7.1 基礎(chǔ)知識(shí) 175

7.1.1 函數(shù)參數(shù)的常用技巧 175

7.1.2 函數(shù)返回的常見(jiàn)模式 179

7.1.3 常用函數(shù)模塊:functools 184

7.2 案例故事 187

函數(shù)與狀態(tài) 187

7.3 編程建議 194

7.3.1 別寫(xiě)太復(fù)雜的函數(shù) 194

7.3.2 一個(gè)函數(shù)只包含一層抽象 196

7.3.3 優(yōu)先使用列表推導(dǎo)式 203

7.3.4 你沒(méi)有那么需要lambda 204

7.3.5 了解遞歸的局限性 205

7.4 總結(jié) 207

第8章 裝飾器 209

8.1 基礎(chǔ)知識(shí) 211

8.1.1 裝飾器基礎(chǔ) 211

8.1.2 使用functools.wraps()修飾包裝函數(shù) 213

8.1.3 實(shí)現(xiàn)可選參數(shù)裝飾器 215

8.1.4 用類(lèi)來(lái)實(shí)現(xiàn)裝飾器(函數(shù)替換) 217

8.1.5 用類(lèi)來(lái)實(shí)現(xiàn)裝飾器(實(shí)例替換) 219

8.1.6 使用wrapt模塊助力裝飾器編寫(xiě) 221

8.2 編程建議 223

8.2.1 了解裝飾器的本質(zhì)優(yōu)勢(shì) 223

8.2.2 使用類(lèi)裝飾器替代元類(lèi) 225

8.2.3 別弄混裝飾器和裝飾器模式 226

8.2.4 淺裝飾器,深實(shí)現(xiàn) 227

8.3 總結(jié) 228

第9章 面向?qū)ο缶幊獭?30

9.1 基礎(chǔ)知識(shí) 232

9.1.1 類(lèi)常用知識(shí) 232

9.1.2 內(nèi)置類(lèi)方法裝飾器 235

9.1.3 鴨子類(lèi)型及其局限性 239

9.1.4 抽象類(lèi) 242

9.1.5 多重繼承與MRO 248

9.1.6 其他知識(shí) 251

9.2 案例故事 255

繼承是把雙刃劍 255

9.3 編程建議 265

9.3.1 使用__init_subclass__替代元類(lèi) 265

9.3.2 在分支中尋找多態(tài)的應(yīng)用時(shí)機(jī) 266

9.3.3 有序組織你的類(lèi)方法 268

9.3.4 函數(shù)搭配,干活不累 270

9.4 總結(jié) 274

第 10章 面向?qū)ο笤O(shè)計(jì)原則(上) 276

10.1 類(lèi)型注解基礎(chǔ) 278

10.2 SRP:?jiǎn)我宦氊?zé)原則 279

10.2.1 案例:一個(gè)簡(jiǎn)單的Hacker News爬蟲(chóng) 280

10.2.2 違反SRP的壞處 283

10.2.3 大類(lèi)拆小類(lèi) 284

10.3 OCP:開(kāi)放-關(guān)閉原則 285

10.3.1 接受OCP的考驗(yàn) 286

10.3.2 通過(guò)繼承改造代碼 288

10.3.3 使用組合與依賴(lài)注入 289

10.3.4 使用數(shù)據(jù)驅(qū)動(dòng) 292

10.4 總結(jié) 294

第 11章 面向?qū)ο笤O(shè)計(jì)原則(下) 295

11.1 LSP:里式替換原則 296

11.1.1 子類(lèi)隨意拋出異?!?96

11.1.2 子類(lèi)隨意調(diào)整方法參數(shù)與返回值 300

11.1.3 基于隱式合約違反LSP 304

11.1.4 LSP小結(jié) 306

11.2 DIP:依賴(lài)倒置原則 306

11.2.1 案例:按來(lái)源統(tǒng)計(jì)Hacker News條目數(shù)量 307

11.2.2 為腳本編寫(xiě)單元測(cè)試 309

11.2.3 實(shí)現(xiàn)DIP 311

11.2.4 倒置后的單元測(cè)試 314

11.2.5 DIP小結(jié) 315

11.3 ISP:接口隔離原則 317

11.3.1 案例:處理頁(yè)面歸檔需求 317

11.3.2 修改實(shí)體類(lèi) 318

11.3.3 違反ISP 320

11.3.4 分拆接口 320

11.3.5 其他違反ISP的場(chǎng)景 322

11.4 總結(jié) 322

第 12章 數(shù)據(jù)模型與描述符 324

12.1 基礎(chǔ)知識(shí) 326

12.1.1 字符串魔法方法 326

12.1.2 比較運(yùn)算符重載 329

12.1.3 描述符 332

12.2 案例故事 341

處理旅游數(shù)據(jù)的三種方案 341

12.3 編程建議 350

12.3.1 認(rèn)識(shí)__hash__的危險(xiǎn)性 350

12.3.2 數(shù)據(jù)模型不是“躺贏”之道 351

12.3.3 不要依賴(lài)__del__方法 353

12.4 總結(jié) 354

第 13章 開(kāi)發(fā)大型項(xiàng)目 356

13.1 常用工具介紹 357

13.1.1 flake8 357

13.1.2 isort 360

13.1.3 black 361

13.1.4 pre-commit 364

13.1.5 mypy 365

13.2 單元測(cè)試簡(jiǎn)介 366

13.2.1 unittest 367

13.2.2 pytest 369

13.3 有關(guān)單元測(cè)試的建議 375

13.3.1 寫(xiě)單元測(cè)試不是浪費(fèi)時(shí)間 375

13.3.2 不要總想著“補(bǔ)”測(cè)試 377

13.3.3 難測(cè)試的代碼就是爛代碼 378

13.3.4 像應(yīng)用代碼一樣對(duì)待測(cè)試代碼 379

13.3.5 避免教條主義 380

13.4 總結(jié) 381

結(jié)語(yǔ) 383

本目錄推薦

掃描二維碼
Copyright ? 讀書(shū)網(wǎng) www.talentonion.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號(hào) 鄂公網(wǎng)安備 42010302001612號(hào)