本書作者BrettSlatkin以使用場景為主導(dǎo)的精練教學(xué)方式,匯聚了59條的實(shí)踐原則、開發(fā)技巧和便捷方案,并以實(shí)用的代碼范例來解釋它們。作者根據(jù)自己在Google公司多年開發(fā)Python基礎(chǔ)架構(gòu)所積累的經(jīng)驗(yàn),揭示了Python語言中一些鮮為人知的微妙特性,并給出了能夠改善代碼功能及運(yùn)行效率的習(xí)慣用法。通過本書,你能夠了解到解決關(guān)鍵編程任務(wù)所用的方式,并學(xué)會編寫易于理解、便于維護(hù)且利于改進(jìn)的代碼。
目錄?Contents
本書贊譽(yù)
譯??者??序
前言
致謝
第1章 用Pythonic方式來思考 1
第1條:確認(rèn)自己所用的Python版本 1
第2條:遵循PEP 8風(fēng)格指南 3
第3條:了解bytes、str與unicode的區(qū)別 5
第4條:用輔助函數(shù)來取代復(fù)雜的表達(dá)式 8
第5條:了解切割序列的辦法 10
第6條:在單次切片操作內(nèi),不要同時(shí)指定start、end和stride 13
第7條:用列表推導(dǎo)來取代map和f?ilter 15
第8條:不要使用含有兩個(gè)以上表達(dá)式的列表推導(dǎo) 16
第9條:用生成器表達(dá)式來改寫數(shù)據(jù)量較大的列表推導(dǎo) 18
第10條:盡量用enumerate取代range 20
第11條:用zip函數(shù)同時(shí)遍歷兩個(gè)迭代器 21
第12條:不要在for和while循環(huán)后面寫else塊 23
第13條:合理利用try/except/else/f?inally結(jié)構(gòu)中的每個(gè)代碼塊 25
第2章 函數(shù) 28
第14條:盡量用異常來表示特殊情況,而不要返回None 28
第15條:了解如何在閉包里使用外圍作用域中的變量 30
第16條:考慮用生成器來改寫直接返回列表的函數(shù) 35
第17條:在參數(shù)上面迭代時(shí),要多加小心 37
第18條:用數(shù)量可變的位置參數(shù)減少視覺雜訊 41
第19條:用關(guān)鍵字參數(shù)來表達(dá)可選的行為 43
第20條:用None和文檔字符串來描述具有動態(tài)默認(rèn)值的參數(shù) 46
第21條:用只能以關(guān)鍵字形式指定的參數(shù)來確保代碼明晰 49
第3章 類與繼承 53
第22條:盡量用輔助類來維護(hù)程序的狀態(tài),而不要用字典和元組 53
第23條:簡單的接口應(yīng)該接受函數(shù),而不是類的實(shí)例 58
第24條:以@classmethod形式的多態(tài)去通用地構(gòu)建對象 62
第25條:用super初始化父類 67
第26條:只在使用Mix-in組件制作工具類時(shí)進(jìn)行多重繼承 71
第27條:多用public屬性,少用private屬性 75
第28條:繼承collections.abc以實(shí)現(xiàn)自定義的容器類型 79
第4章 元類及屬性 84
第29條:用純屬性取代get和set方法 84
第30條:考慮用@property來代替屬性重構(gòu) 88
第31條:用描述符來改寫需要復(fù)用的@property方法 92
第32條:用__getattr__、__getattribute__和__setattr__實(shí)現(xiàn)按需生成的屬性 97
第33條:用元類來驗(yàn)證子類 102
第34條:用元類來注冊子類 104
第35條:用元類來注解類的屬性 108
第5章 并發(fā)及并行 112
第36條:用subprocess模塊來管理子進(jìn)程 113
第37條:可以用線程來執(zhí)行阻塞式I/O,但不要用它做平行計(jì)算 117
第38條:在線程中使用Lock來防止數(shù)據(jù)競爭 121
第39條:用Queue來協(xié)調(diào)各線程之間的工作 124
第40條:考慮用協(xié)程來并發(fā)地運(yùn)行多個(gè)函數(shù) 131
第41條:考慮用concurrent.futures來實(shí)現(xiàn)真正的平行計(jì)算 141
第6章 內(nèi)置模塊 145
第42條:用functools.wraps定義函數(shù)修飾器 145
第43條:考慮以contextlib和with語句來改寫可復(fù)用的try/f?inally代碼 148
第44條:用copyreg實(shí)現(xiàn)的pickle操作 151
第45條:應(yīng)該用datetime模塊來處理本地時(shí)間,而不是用time模塊 157
第46條:使用內(nèi)置算法與數(shù)據(jù)結(jié)構(gòu) 161
第47條:在重視度的場合,應(yīng)該使用decimal 166
第48條:學(xué)會安裝由Python開發(fā)者社區(qū)所構(gòu)建的模塊 168
第7章 協(xié)作開發(fā) 170
第49條:為每個(gè)函數(shù)、類和模塊編寫文檔字符串 170
第50條:用包來安排模塊,并提供穩(wěn)固的API 174
第51條:為自編的模塊定義根異常,以便將調(diào)用者與API相隔離 179
第52條:用適當(dāng)?shù)姆绞酱蚱蒲h(huán)依賴關(guān)系 182
第53條:用虛擬環(huán)境隔離項(xiàng)目,并重建其依賴關(guān)系 187
第8章 部署 193
第54條:考慮用模塊級別的代碼來配置不同的部署環(huán)境 193
第55條:通過repr字符串來輸出調(diào)試信息 195
第56條:用unittest來測試全部代碼 198
第57條:考慮用pdb實(shí)現(xiàn)交互調(diào)試 201
第58條:先分析性能,然后再優(yōu)化 203
第59條:用tracemalloc來掌握內(nèi)存的使用及泄漏情況 208
還行啦
書很好,就是有破損,希望以后包裝和運(yùn)輸多注意
印刷很清楚,不錯(cuò)
書很不錯(cuò),正在學(xué)習(xí)。
書給我折了
還沒看,書印刷不錯(cuò)
很好
打折活動確實(shí)不錯(cuò),都是正版書,質(zhì)量挺好!
不錯(cuò)!
很好 繼續(xù)努力
這次活動買的,很便宜
每天一課,簡單實(shí)用
還可以
正版書,里面的字跡很清晰,紙張的質(zhì)量也好
人不讀書將虛度人生光陰,多讀好書提升自己的知識。向大家推薦這一本好書。
薄薄的,對我挺有幫助的
OKOKOK
內(nèi)容不錯(cuò)
好書,值得購買
完美,價(jià)格實(shí)惠,并且全新未拆封。
不錯(cuò),先看看
蠻好的,雖然書本身有點(diǎn)貴
書不錯(cuò),很經(jīng)典。物流也快,滿意
很不錯(cuò),值得一讀
內(nèi)容還沒看,這本書紙張和印刷都很差,59塊錢的書,當(dāng)當(dāng)你就給我這種盜版書看?我這39塊錢的python書紙張都比這好。
紙質(zhì)很好。內(nèi)容很好 滿分滿分滿分滿分滿分滿分滿分
里面的技巧都是編寫代碼過程中需要注意和提高的,很有收獲!
python的一些代碼技巧,入門后可以看這本書,可以快速提高