Effective Python:編寫(xiě)高質(zhì)量Python代碼_第1頁(yè)
Effective Python:編寫(xiě)高質(zhì)量Python代碼_第2頁(yè)
Effective Python:編寫(xiě)高質(zhì)量Python代碼_第3頁(yè)
Effective Python:編寫(xiě)高質(zhì)量Python代碼_第4頁(yè)
Effective Python:編寫(xiě)高質(zhì)量Python代碼_第5頁(yè)
已閱讀5頁(yè),還剩31頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

EffectivePython:編寫(xiě)高質(zhì)量Python代碼讀書(shū)筆記模板01思維導(dǎo)圖讀書(shū)筆記目錄分析內(nèi)容摘要精彩摘錄作者介紹目錄0305020406思維導(dǎo)圖第版代碼代碼方式方法開(kāi)發(fā)功能語(yǔ)言第條函數(shù)代碼第章模塊邏輯屬性參數(shù)類列表方法本書(shū)關(guān)鍵字分析思維導(dǎo)圖內(nèi)容摘要內(nèi)容摘要本書(shū)可以幫你掌握真正的Pythonic編程方式,令你能夠完全發(fā)揮出Python語(yǔ)言的強(qiáng)大功能,并寫(xiě)出健壯而高效的代碼。ScottMeyers在暢銷書(shū)《EffectiveC++》中開(kāi)創(chuàng)了一種以使用場(chǎng)景為主導(dǎo)的精練教學(xué)方式,本書(shū)作者BrettSlatkin就以這種方式匯聚了90條實(shí)踐原則、開(kāi)發(fā)技巧和便捷方案,并以實(shí)用的代碼范例來(lái)解釋它們。Slatkin根據(jù)自己在Google公司多年開(kāi)發(fā)Python基礎(chǔ)架構(gòu)所積累的經(jīng)驗(yàn),揭示Python語(yǔ)言中一些鮮為人知的微妙特性,并給出了能夠改善代碼功能及運(yùn)行效率的習(xí)慣用法。通過(guò)本書(shū),你能夠了解到解決關(guān)鍵編程任務(wù)所用的奇妙方式,并學(xué)會(huì)編寫(xiě)易于理解、便于維護(hù)且利于改進(jìn)的代碼。讀書(shū)筆記讀書(shū)筆記Python入門容易,深入難,很多人學(xué)習(xí)Python之后一直打不開(kāi)思路,所以寫(xiě)出來(lái)的代碼沒(méi)有充分發(fā)揮出Python的特性。本書(shū)會(huì)詳細(xì)地告訴大家如何采用符合Python風(fēng)格的方式(Pythonic方式)來(lái)編寫(xiě)程序,這是使用Python語(yǔ)言的最佳方式。水平很高,需要有一到兩年P(guān)ython基礎(chǔ)才能比較順暢地讀下來(lái),收獲頗豐。個(gè)人功力不夠,有的暫時(shí)沒(méi)用到,也不清楚怎么使用,不過(guò)結(jié)合已有知識(shí)來(lái)看還是很不錯(cuò)的。對(duì)應(yīng)的python版本很新,3.8。值得?;仡^讀讀,比另外一本好,另外一些很多建議都是針對(duì)老版本的。很好的一本書(shū)想把Python寫(xiě)好看了還得多用心。推薦入門之后看,很多技巧和建議都非常符合python原則,深入理解之后會(huì)對(duì)什么是符合pythonic的代碼有新的認(rèn)識(shí)。精彩摘錄精彩摘錄不要通過(guò)長(zhǎng)度判斷容器或序列是不是空的,例如不要通過(guò)iflen(somelist)==0判斷somelist是否為或''等空值,而是應(yīng)該采用ifnotsomelist這樣的寫(xiě)法來(lái)判斷,因?yàn)镻ython會(huì)把空值自動(dòng)評(píng)估為False。要把Unicode數(shù)據(jù)轉(zhuǎn)換成二進(jìn)制數(shù)據(jù),必須調(diào)用str的encode方法。要把二進(jìn)制數(shù)據(jù)轉(zhuǎn)換成Unicode數(shù)據(jù),必須調(diào)用bytes的decode方法。文件中的import語(yǔ)句應(yīng)該按順序劃分成三個(gè)部分:首先引入標(biāo)準(zhǔn)庫(kù)里的模塊,然后引入第三方模塊,最后引入自己的模塊。屬于同一個(gè)部分的import語(yǔ)句按字母順序排列。編寫(xiě)Python程序的時(shí)候,一定要把解碼和編碼操作放在界面最外層來(lái)做,讓程序的核心部分可以使用Unicode數(shù)據(jù)來(lái)運(yùn)作,這種辦法通常叫作Unicode三明治(Unicodesandwich)。如果無(wú)法確定這些列表的長(zhǎng)度相同,那就不要把它們傳給zip,而是應(yīng)該傳給另一個(gè)叫作zip_longest的函數(shù),這個(gè)函數(shù)位于內(nèi)置的itertools模塊里。enumerate能夠把任何一種迭代器(iterator)封裝成惰性生成器(lazygenerator,參見(jiàn)第30條)通過(guò)unpacking來(lái)賦值要比通過(guò)下標(biāo)去訪問(wèn)元組內(nèi)的元素更清晰,而且這種寫(xiě)法所需的代碼量通常比較少。因?yàn)閦ip函數(shù)本來(lái)就是這樣設(shè)計(jì)的:只要其中任何一個(gè)迭代器處理完畢,它就不再往下走了。目錄分析第1條查詢自己使用的Python版本第3條了解bytes與str的區(qū)別第2條遵循PEP8風(fēng)格指南第1章培養(yǎng)Pythonic思維第4條用支持插值的f-string取代C風(fēng)格的格式字符串與str.format方法第5條用輔助函數(shù)取代復(fù)雜的表達(dá)式第6條把數(shù)據(jù)結(jié)構(gòu)直接拆分到多個(gè)變量里,不要專門通過(guò)下標(biāo)訪問(wèn)第7條盡量用enumerate取代range第1章培養(yǎng)Pythonic思維第8條用zip函數(shù)同時(shí)遍歷兩個(gè)迭代器第10條用賦值表達(dá)式減少重復(fù)代碼第9條不要在for與while循環(huán)后面寫(xiě)else塊第1章培養(yǎng)Pythonic思維第11條學(xué)會(huì)對(duì)序列做切片第12條不要在切片里同時(shí)指定起止下標(biāo)與步進(jìn)第13條通過(guò)帶星號(hào)的unpacking操作來(lái)捕獲多個(gè)元素,不要用切片第14條用sort方法的key參數(shù)來(lái)表示復(fù)雜的排序邏輯第15條不要過(guò)分依賴給字典添加條目時(shí)所用的順序12345第2章列表與字典第16條用get處理鍵不在字典中的情況,不要使用in與KeyError第18條學(xué)會(huì)利用__missing__構(gòu)造依賴鍵的默認(rèn)值第17條用defaultdict處理內(nèi)部狀態(tài)中缺失的元素,而不要用setdefault第2章列表與字典第19條不要把函數(shù)返回的多個(gè)數(shù)值拆分到三個(gè)以上的變量中第20條遇到意外狀況時(shí)應(yīng)該拋出異常,不要返回None第21條了解如何在閉包里面使用外圍作用域中的變量第22條用數(shù)量可變的位置參數(shù)給函數(shù)設(shè)計(jì)清晰的參數(shù)列表第3章函數(shù)第23條用關(guān)鍵字參數(shù)來(lái)表示可選的行為第24條用None和docstring來(lái)描述默認(rèn)值會(huì)變的參數(shù)第25條用只能以關(guān)鍵字指定和只能按位置傳入的參數(shù)來(lái)設(shè)計(jì)清晰的參數(shù)列表第26條用functools.wraps定義函數(shù)修飾器第3章函數(shù)第27條用列表推導(dǎo)取代map與filter第28條控制推導(dǎo)邏輯的子表達(dá)式不要超過(guò)兩個(gè)第29條用賦值表達(dá)式消除推導(dǎo)中的重復(fù)代碼第30條不要讓函數(shù)直接返回列表,應(yīng)該讓它逐個(gè)生成列表里的值第31條謹(jǐn)慎地迭代函數(shù)所收到的參數(shù)12345第4章推導(dǎo)與生成第32條考慮用生成器表達(dá)式改寫(xiě)數(shù)據(jù)量較大的列表推導(dǎo)第33條通過(guò)yieldfrom把多個(gè)生成器連起來(lái)用第34條不要用send給生成器注入數(shù)據(jù)第35條不要通過(guò)throw變換生成器的狀態(tài)第36條考慮用itertools拼裝迭代器與生成器12345第4章推導(dǎo)與生成第37條用組合起來(lái)的類來(lái)實(shí)現(xiàn)多層結(jié)構(gòu),不要用嵌套的內(nèi)置類型第38條讓簡(jiǎn)單的接口接受函數(shù),而不是類的實(shí)例第39條通過(guò)@classmethod多態(tài)來(lái)構(gòu)造同一體系中的各類對(duì)象第40條通過(guò)super初始化超類第41條考慮用mix-in類來(lái)表示可組合的功能12345第5章類與接口第43條自定義的容器類型應(yīng)該從collections.abc繼承第42條優(yōu)先考慮用public屬性表示應(yīng)受保護(hù)的數(shù)據(jù),不要用private屬性表示第5章類與接口第44條用純屬性與修飾器取代舊式的setter與getter方法第45條考慮用@property實(shí)現(xiàn)新的屬性訪問(wèn)邏輯,不要急著重構(gòu)原有的代碼第46條用描述符來(lái)改寫(xiě)需要復(fù)用的@property方法第47條針對(duì)惰性屬性使用__getattr__、__getattribute__及__setattr__第48條用__init_subclass__驗(yàn)證子類寫(xiě)得是否正確第49條用__init_subclass__記錄現(xiàn)有的子類010302040506第6章元類與屬性第51條優(yōu)先考慮通過(guò)類修飾器來(lái)提供可組合的擴(kuò)充功能,不要使用元類第50條用__set_name__給類屬性加注解第6章元類與屬性第52條用subprocess管理子進(jìn)程第53條可以用線程執(zhí)行阻塞式I/O,但不要用它做并行計(jì)算第54條利用Lock防止多個(gè)線程爭(zhēng)用同一份數(shù)據(jù)第55條用Queue來(lái)協(xié)調(diào)各線程之間的工作進(jìn)度第7章并發(fā)與并行第56條學(xué)會(huì)判斷什么場(chǎng)合必須做并發(fā)第58條學(xué)會(huì)正確地重構(gòu)代碼,以便用Queue做并發(fā)第57條不要在每次fan-out時(shí)都新建一批Thread實(shí)例第7章并發(fā)與并行第59條如果必須用線程做并發(fā),那就考慮通過(guò)ThreadPoolExecutor實(shí)現(xiàn)第60條用協(xié)程實(shí)現(xiàn)高并發(fā)的I/O第61條學(xué)會(huì)用asyncio改寫(xiě)那些通過(guò)線程實(shí)現(xiàn)的I/O第62條結(jié)合線程與協(xié)程,將代碼順利遷移到asyncio第63條讓asyncio的事件循環(huán)保持暢通,以便進(jìn)一步提升程序的響應(yīng)能力第64條考慮用concurrent.futures實(shí)現(xiàn)真正的并行計(jì)算010302040506第7章并發(fā)與并行第65條合理利用try/except/else/finally結(jié)構(gòu)中的每個(gè)代碼塊第66條考慮用contextlib和with語(yǔ)句來(lái)改寫(xiě)可復(fù)用的try/finally代碼第67條用datetime模塊處理本地時(shí)間,不要用time模塊第68條用copyreg實(shí)現(xiàn)可靠的pickle操作第8章穩(wěn)定與性能第69條在需要準(zhǔn)確計(jì)算的場(chǎng)合,用decimal表示相應(yīng)的數(shù)值第70條先分析性能,然后再優(yōu)化第71條優(yōu)先考慮用deque實(shí)現(xiàn)生產(chǎn)者-消費(fèi)者隊(duì)列第72條考慮用bisect搜索已排序的序列第73條學(xué)會(huì)使用heapq制作優(yōu)先級(jí)隊(duì)列第74條考慮用memoryview與bytearray來(lái)實(shí)現(xiàn)無(wú)須拷貝的bytes操作010302040506第8章穩(wěn)定與性能第75條通過(guò)repr字符串輸出調(diào)試信息第76條在TestCase子類里驗(yàn)證相關(guān)的行為第77條把測(cè)試前、后的準(zhǔn)備與清理邏輯寫(xiě)在setUp、tearDown、setUp-Module與tearDownModule中,以防用例之間互相干擾第78條用Mock來(lái)模擬受測(cè)代碼所依賴的復(fù)雜函數(shù)第9章測(cè)試與調(diào)試第79條把受測(cè)代碼所依賴的系統(tǒng)封裝起來(lái),以便于模擬和測(cè)試第81條用tracemalloc來(lái)掌握內(nèi)存的使用與泄漏情況第80條考慮用pdb做交互調(diào)試第9章測(cè)試與調(diào)試第82條學(xué)會(huì)尋找由其他Python開(kāi)發(fā)者所構(gòu)建的模塊第83條用虛擬環(huán)境隔離項(xiàng)目,并重建依賴關(guān)系第84條每一個(gè)函數(shù)、類與模塊都要寫(xiě)docstring第85條用包來(lái)安排模塊,以提供穩(wěn)固的API第10章協(xié)作開(kāi)發(fā)第86條考慮用模塊級(jí)別的代碼配置不同的部署環(huán)境第87

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論