Effective Python:編寫高質量Python代碼的59個有效方法

Effective Python:編寫高質量Python代碼的59個有效方法 pdf epub mobi txt 电子书 下载 2025

[美] 布雷特·斯拉特金 著,愛飛翔 譯
想要找书就要到 求知書站
立刻按 ctrl+D收藏本页
你会得到大惊喜!!
出版社: 机械工业出版社
ISBN:9787111523550
版次:1
商品编码:11864820
品牌:机工出版
包装:平装
丛书名: Effective系列丛书
开本:16开
出版时间:2016-01-01
用纸:胶版纸
页数:210

具体描述

編輯推薦

Google高級軟件工程師Brett Slatkin融閤自己多年Python開發實戰經驗,深入探討編寫高質量Python代碼的技巧、禁忌和實踐涵蓋Python 3.xPython 2.x主要應用領域,匯聚59條優秀實踐原則、開發技巧和便捷方案,包含大量實用範例代碼


內容簡介

本書作者BrettSlatkin以使用場景為主導的精練教學方式,匯聚瞭59條優秀的實踐原則、開發技巧和便捷方案,並以實用的代碼範例來解釋它們。作者根據自己在Google公司多年開發Python基礎架構所積纍的經驗,揭示瞭Python語言中一些鮮為人知的微妙特性,並給齣瞭能夠改善代碼功能及運行效率的習慣用法。通過本書,你能夠瞭解到解決關鍵編程任務所用的佳方式,並學會編寫易於理解、便於維護且利於改進的代碼。

本書可以幫你掌握真正的Pythonic編程方式,令你能夠完*發揮齣Python語言的強大功能,並寫齣健壯而高效的代碼。Scott Meyers在暢銷書《Effective C++》中開創瞭一種以使用場景為主導的精練教學方式,本書作者Brett Slatkin就以這種方式匯聚瞭59條優秀的實踐原則、開發技巧和便捷方案,並以實用的代碼範例來解釋它們。

??Slatkin根據自己在Google公司多年開發Python基礎架構所積纍的經驗,揭示Python語言中一些鮮為人知的微妙特性,並給齣瞭能夠改善代碼功能及運行效率的習慣用法。通過本書,你能夠瞭解到解決關鍵編程任務所用的方式,並學會編寫易於理解、便於維護且利於改進的代碼。本書核心內容包括:

????????● 涵蓋Python 3.x及Python 2.x主要應用領域的實用指南,以及與之配套的詳細解釋及代碼範例。??

????????與函數相關的編程建議,這些建議有助於我們寫齣意圖清晰、便於復用且缺陷較少的函數。????

????● 如何準確地錶達類與對象的行為。??

??● 在使用元類和動態屬性時,如何避免錯誤的用法。??

??● 更為高效的並發及並行方式。??

??● 與Python內置模塊相關的編程技巧和習慣用法。??

??● 多人協作時所用的開發工具和實踐方式。??

??● 旨在改善代碼質量和程序性能的調試、測試與優化方案。????????

??

作者簡介

?

???Brett Slatkin

????

??Google公司高級軟件工程師。他是Google消費者調查項目的工程主管及聯閤創始人,曾從事Google App Engine的Python基礎架構工作,並利用Python來管理眾多的Google服務器。Slatkin也是PubSubHubbub協議的???聯閤創始人,還用Python為Google實現瞭針對該協議的係統。他擁有哥倫比亞大學計算機工程專業學士學位。????

???


精彩書評

?

?????“Slatkin所寫的這本書,其每個條目(item)都是一項獨立的教程,並包含它自己的源代碼。這種編排方式,使我們可以隨意跳讀:大傢可以按照學習的需要來瀏覽這些item。本書涉及的話題十分廣泛,作者針對這些話題,給齣瞭相當精練而又符閤主流觀點的建議,我把這本書推*給中級Python程序員。”
—— Brandon Rhodes,Dropbox的軟件工程師、2016至2017年PyCon會議主席

?

“當初我剛從Java轉嚮Python時,要是能先看到這本書的話,那就能節省好幾個月的時間。這本書使我意識到:以前反復編寫的那些代碼,都不是很符閤Python的編程風格。這本書包含瞭Python語言的絕大部分必備知識,使我們無需通過數月乃至數年的艱難探索,即可逐個瞭解它們。本書的內容非常豐富,從PEP8的重要性和Python語言的主要編程習慣開始,然後談到如何設計函數、方法和類,如何高效地使用標準庫,以及如何設計高質量的API,*後,又講瞭測試及性能問題。新手和老手都可以通過這本優秀教程來領略Python編程的真諦。”

?

??——Mike Bayer,SQLAlchemy的創?立者????

“這本書會清楚地告訴你如何改善Python代碼的風格及函數的質量,它會令你的Python技能更上一層樓。”

???

??——Leah Culver,Dropbox的開發者代?言人(developer advocate)??

?

?? “這是一本*好的書,對其他編程語言較有經驗的開發者,可以通過本書迅速學習Python,並瞭解更符閤Python風格的基礎語言結構。本書內容清晰、簡明,而且易於理解,隻需閱讀某個條目或某一章,即可單獨研究某個話題。書中講解瞭大量純Python的語言結構,使讀者不會把它們與Python生態圈中的其他復雜事物相混淆。經驗更多的開發者可以通過書中提供的一些深度範例來瞭解自己尚未遇到的語言特性,以及原來不常使用的語言功能。作者肯定是一位非常熟悉Python的人,他用自己豐富的經驗來給讀者指齣各種經常齣現的bug以及經常齣錯的寫法。另外,本書也恰當地說明瞭Python 2.X與Python 3.X之間的微妙區彆,大傢在各種版本的Python之間遷移時,可以把本書用作參考資料。”

?

??——Katherine Scott,Tempo Automation的軟件主管

“這是一本對初級開發者和熟練開發者都適用的好書。代碼範例及其講解都寫得非常細緻、非常簡潔、非常透徹。”

???

??——C. Titus Brown,加州大學戴維斯分校??教授??

??

“這本參考書非常有用,它提供瞭很多高級的Python用法,並講解瞭如何構建更清晰、更易維護的軟件。把書中的建議付諸實踐,就可以令自己的Python技能得到提升。”

?

??????????????????????????????——Wes McKinney,pandas程?序庫的創立者《Python for Data Analysis》的作者、Cloudera的軟件工程師

??????

目錄

本書贊譽
譯者序
前  言
緻  謝
第1章 用Pythonic方式來思考 1
第1條:確認自己所用的Python版本 1
第2條:遵循PEP 8風格指南 3
第3條:瞭解bytes、str與unicode的區彆 5
第4條:用輔助函數來取代復雜的錶達式 8
第5條:瞭解切割序列的辦法 10
第6條:在單次切片操作內,不要同時指定start、end和stride 13
第7條:用列錶推導來取代map和f?ilter 15
第8條:不要使用含有兩個以上錶達式的列錶推導 16
第9條:用生成器錶達式來改寫數據量較大的列錶推導 18
第10條:盡量用enumerate取代range 20
第11條:用zip函數同時遍曆兩個迭代器 21
第12條:不要在for和while循環後麵寫else塊 23
第13條:閤理利用try/except/else/f?inally結構中的每個代碼塊 25
第2章 函數 28
第14條:盡量用異常來錶示特殊情況,而不要返迴None 28
第15條:瞭解如何在閉包裏使用外圍作用域中的變量 30
第16條:考慮用生成器來改寫直接返迴列錶的函數 35
第17條:在參數上麵迭代時,要多加小心 37
第18條:用數量可變的位置參數減少視覺雜訊 41
第19條:用關鍵字參數來錶達可選的行為 43
第20條:用None和文檔字符串來描述具有動態默認值的參數 46
第21條:用隻能以關鍵字形式指定的參數來確保代碼明晰 49
第3章 類與繼承 53
第22條:盡量用輔助類來維護程序的狀態,而不要用字典和元組 53
第23條:簡單的接口應該接受函數,而不是類的實例 58
第24條:以@classmethod形式的多態去通用地構建對象 62
第25條:用super初始化父類 67
第26條:隻在使用Mix-in組件製作工具類時進行多重繼承 71
第27條:多用public屬性,少用private屬性 75
第28條:繼承collections.abc以實現自定義的容器類型 79
第4章 元類及屬性 84
第29條:用純屬性取代get和set方法 84
第30條:考慮用@property來代替屬性重構 88
第31條:用描述符來改寫需要復用的@property方法 92
第32條:用__getattr__、__getattribute__和__setattr__實現按需生成的屬性 97
第33條:用元類來驗證子類 102
第34條:用元類來注冊子類 104
第35條:用元類來注解類的屬性 108
第5章 並發及並行 112
第36條:用subprocess模塊來管理子進程 113
第37條:可以用綫程來執行阻塞式I/O,但不要用它做平行計算 117
第38條:在綫程中使用Lock來防止數據競爭 121
第39條:用Queue來協調各綫程之間的工作 124
第40條:考慮用協程來並發地運行多個函數 131
第41條:考慮用concurrent.futures來實現真正的平行計算 141
第6章 內置模塊 145
第42條:用functools.wraps定義函數修飾器 145
第43條:考慮以contextlib和with語句來改寫可復用的try/f?inally代碼 148
第44條:用copyreg實現可靠的pickle操作 151
第45條:應該用datetime模塊來處理本地時間,而不是用time模塊 157
第46條:使用內置算法與數據結構 161
第47條:在重視精確度的場閤,應該使用decimal 166
第48條:學會安裝由Python開發者社區所構建的模塊 168
第7章 協作開發 170
第49條:為每個函數、類和模塊編寫文檔字符串 170
第50條:用包來安排模塊,並提供穩固的API 174
第51條:為自編的模塊定義根異常,以便將調用者與API相隔離 179
第52條:用適當的方式打破循環依賴關係 182
第53條:用虛擬環境隔離項目,並重建其依賴關係 187
第8章 部署 193
第54條:考慮用模塊級彆的代碼來配置不同的部署環境 193
第55條:通過repr字符串來輸齣調試信息 195
第56條:用unittest來測試全部代碼 198
第57條:考慮用pdb實現交互調試 201
第58條:先分析性能,然後再優化 203
第59條:用tracemalloc來掌握內存的使用及泄漏情況 208

前言/序言

  Python編程語言很強大、很有魅力,但同時也很獨特,所以掌握起來比較睏難。許多程序員從他們所熟悉的語言轉入Python之後,沒能把思路打開,以緻寫齣的代碼無法完全發揮齣Python的特性,而另外一些程序員則相反,他們濫用Python的特性,導緻程序可能在將來齣現嚴重問題。
  本書會深入講解如何以符閤Python風格的(Pythonic)方式來編寫程序,這種方式就是運用Python語言的最佳方式。筆者假定你對這門語言已經有瞭初步瞭解。編程新手可以通過本書學到各種Python功能的最佳用法,而編程老手則能夠學會如何自信地運用一種功能強大的新工具。
  筆者的目標是令大傢學會用Python來開發優秀的軟件。
  本書涵蓋的內容本書每一章都包含許多互相關聯的條目,大傢可以按照自己的需要,隨意閱讀這些條目。每個條目都包含簡明而具體的教程,告訴你應該如何更高效地編寫Python程序。筆者在每個條目裏麵都給齣瞭建議,告訴大傢應該怎樣做、應該避免哪些用法,以及如何在各種做法之間求得平衡,並解釋瞭筆者所選的做法好在哪裏。
  本書中的各項條目,適用於Python 3和Python 2(請參閱本書第1條)。對於Jython、IronPython或PyPy等其他運行時環境,大部分條目應該同樣適用。
  第1章:用Pythonic方式來思考Python開發者用Pythonic這個形容詞來描述具有特定風格的代碼。這種風格是大傢在使用Python語言進行編程並相互協作的過程中逐漸形成的習慣。本章講解如何以該風格來完成常見的Python編程工作。
  第2章:函數Python中的函數具備多種特性,這可以簡化編程工作。Python函數的某些性質與其他編程語言中的函數相似,但也有些性質是Python獨有的。本章介紹如何用函數來錶達意圖、提升可復用程度,並減少bug。
  第3章:類與繼承Python是麵嚮對象的語言。用Python編程時,通常需要編寫新類,並定義這些類應該如何通過其接口及繼承體係與外界相交互。本章講解如何使用類和繼承來錶達對象所應具備的行為。
  第4章:元類及屬性元類(metaclass)及動態屬性(dynamic attribute)都是很強大的Python特性,然而它們也可能導緻極其古怪、極其突然的行為。本章講解這些機製的常見用法,以確保讀者寫齣來的代碼符閤最小驚訝原則(rule of least surprise)。
  第5章:並發及並行用Python很容易就能寫齣並發程序,這種程序可以在同一時間做許多件不同的事情。我們也可以通過係統調用、子進程(subprocess)及C語言擴展來實現並行處理。本章講解如何在不同情況下充分利用這些Python特性。
  第6章:內置模塊Python預裝瞭許多寫程序時會用到的重要模塊。這些標準軟件包與通常意義上的Python語言聯係得非常緊密,我們可以將其當成語言規範的一部分。本章將會講解基本的內置模塊。
  第7章:協作開發如果許多人要開發同一個Python程序,那就得仔細商量代碼的寫法瞭。即便你是一個人開發,也需要理解其他人所寫的模塊。本章講解多人協作開發Python程序時所用的標準工具及最佳做法。
  第8章:部署Python提供瞭一些工具,使我們可以把軟件部署到不同的環境中。它也提供瞭一些模塊,令開發者可以把程序編寫得更加健壯。本章講解如何使用Python調試、優化並測試程序,以提升其質量與性能。
  本書使用的約定本書在Python代碼風格指南(Python style guide)的基礎上做瞭一些修改,使範例代碼便於印刷,也便於凸顯其中的重要內容。一行代碼比較長時,會以?字符來錶示摺行。代碼中的某些部分,與當前要講的問題聯係不大,筆者會將這部分代碼略去,並在注釋中以省略號來錶示(# ...)。為瞭縮減範例代碼的篇幅,筆者也把內嵌的文檔刪去瞭。讀者在開發自己的項目時不應該這麼做,而是應該遵循Python風格指南(參見本書第2條),並為源代碼撰寫開發文檔(參見本書第49條)。
  書中大部分代碼,運行之後都會産生輸齣(output)。筆者所謂的輸齣,意思是說:在互動式解釋器(interactive interpreter)中運行這些Python程序時,控製颱或終端機裏麵會打印齣一些信息。這些打印齣來的信息,以等寬字體印刷,它們上方的那一行會標有>>>符號(這個>>>符號是Python解釋器的提示符)。筆者使用這個符號是想告訴大傢:把>>>上方的那些範例代碼輸入Python shell之後,會産生與>>>下方文字相符的輸齣信息。
  除此之外,還有一些上方雖無>>>符號,但卻以等寬字體印刷的代碼段。這些內容用來錶示産生於Python解釋器之外的輸齣信息。它們的上方通常都會有$字符,這錶示筆者是在Bash之類的命令行shell裏麵先運行瞭程序,然後纔産生這些輸齣的。
  獲取源代碼及勘誤錶大傢可以拋開本書的講解部分,把某些範例作為完整的程序運行一遍,這樣是很有好處的。你可以用這些代碼做實驗,以瞭解整個程序的運行原理。全部源碼都可以從本書網站(http://www.effectivepython.com/)下載。書中的錯誤也會張貼到該網站。
  緻  謝?Acknowledgements在生活中,有很多人給瞭我指導、支持及鼓勵,沒有他們,本書就不會麵世。
  感謝《Effective Software Development》係列的顧問Scott Meyers。筆者15歲那年初次閱讀瞭Scott所寫的《Effective C++》,當時我就迷上瞭這門語言。我後來的教育經曆,以及在Google的第一份工作,無疑都得益於Scott的那本書。這次有機會寫作本書,本人深感榮幸。
  感謝核心技術評審者Brett Cannon、Tavis Rudd和Mike Taylor,他們為本書提供瞭深刻而透徹的反饋意見。感謝Leah Culver和Adrian Holovaty,他們兩位認為寫作這樣一本書很有意義。感謝友人Michael Levine、Marzia Niccolai、Ade Oshineye和Katrina Sostek,他們耐心閱讀瞭本書的初稿。也感謝Google諸位同事審讀本書。若沒有以上諸君的幫助,本書讀起來可能就會比較費解。
  感謝製作本書的每一位工作人員。感謝編輯Trina MacDonald啓動本書製作流程,並提供大力支持。感謝諸位團隊成員幫助製作本書,他們是:策劃編輯Tom Cirtin和Chris Zahn、助理編輯Olivia Basegio、營銷經理Stephane Nakib、文字編輯Stephanie Geels,以及生産編輯Julie Nahil。
  感謝與我共事的諸位優秀Python程序員:Anthony Baxter、Brett Cannon、Wesley Chun、Jeremy Hylton、Alex Martelli、Neal Norwitz、Guido van Rossum、Andy Smith、Greg Stein和Ka-Ping Yee。很高興你們能督促並指引我學習Python。Python開發社團構建得非常優秀,成為一名Python開發者,令我感到特彆榮幸。
  感謝諸位同事這些年來對我的關照。感謝Kevin Gibbs幫助我應對風險。感謝Ken Ashcraft、Ryan Barrett和Jon McAlister教會我如何工作。感謝Brad Fitzpatrick幫助我提升工作能力。感謝Paul McDonald陪我一起創建我們的搞怪項目。感謝Jeremy Ginsberg和Jack Hebert令其成為現實。
  感謝激發我編程興趣的諸位老師:Ben Chelf、Vince Hugo、Russ Lewin、Jon Stemmle、Derek Thomson和Daniel Wang。正因為有瞭你們的指引,我纔會努力磨練編程技術,進而使自己有能力去教導他人。
  感謝母親使我找到瞭人生的目標並鼓勵我做程序員。感謝兄弟、祖父母、眾親戚以及兒時的玩伴,從小你們就是我的榜樣,也使我找到瞭成長的快樂。
  最後要感謝我的妻子Colleen,感謝她的關愛和支持,感謝她帶來的歡笑。



用户评价

评分

拖了十多天才发货,客服态度恶劣,再也不会在京东上面买书了

评分

今天拿到手,发现快递包装一角有破损。打开包装,有一本书边角有点破损。其它两本完好。

评分

是正品 送货快 非常信赖京东~

评分

这本书已经考完了,还是非常值得买的。

评分

今天拿到手,发现快递包装一角有破损。打开包装,有一本书边角有点破损。其它两本完好。

评分

买了两本书,学习中。。。

评分

质量不错,活动买的,真心实惠

评分

书的印刷质量没问题,还没开始看呢,先打个好评

评分

东西不错,便宜实惠,还是挺值的。

相关图书

本站所有內容均為互聯網搜索引擎提供的公開搜索信息,本站不存儲任何數據與內容,任何內容與數據均與本站無關,如有需要請聯繫相關搜索引擎包括但不限於百度google,bing,sogou

© 2025 tushu.tinynews.org All Rights Reserved. 求知書站 版权所有