 
			 
				  學習編寫更齣色的代碼,讓工作流程更加平滑
  Python是一門強大且快速增長的動態編程語言。雖然它提供瞭很多用於編寫高級、簡潔、可維護代碼的工具,但是對於這些技術卻一直沒有一個清晰的解釋。《Python高級編程》為介紹所有Python功能提供瞭一個入口。每個概念的完整闡述、關於應用程序的討論、動手指南都將教會你設計更好的架構,以及編寫使得應用程序更加健壯與高效的代碼。
  如果你已經熟悉Python,並期望使用它提供的所有功能,那本書正是為你準備的。
  主要內容
  ◆ 涵蓋所有語言的功能,包括函數、如何應用裝飾器、上下文管理器與生成器
  ◆ 介紹Python的類與對象模型、元類、類工廠以及抽象基類
  ◆ 驗證如何操縱Unicode字符串,以及Python2與Python3字
  符串的區彆
  ◆ 提供Python2與Python3差異的深入講解,並闡述如何編寫跨版本的代碼
  ◆ 探討單元測試、命令行界麵工具以及新的異步編程庫
  Luke Sneeringer,是一位經驗豐富的Python開發人員,他曾經為諸如FeedMagnet、May Designs以及Ansible在內的多傢公司設計、架構和創建多個Python應用程序。他經常作為演講嘉賓齣席Python會議。
第Ⅰ部分  函    數
第1章 裝飾器 3
1.1  理解裝飾器 3
1.2  裝飾器語法 4
1.3  在何處使用裝飾器 6
1.4  編寫裝飾器的理由 6
1.5  編寫裝飾器的時機 7
1.5.1  附加功能 7
1.5.2  數據的清理或添加 7
1.5.3  函數注冊 7
1.6  編寫裝飾器 7
1.6.1  初始示例:函數注冊錶 8
1.6.2  執行時封裝代碼 9
1.6.3  裝飾器參數 16
1.7  裝飾類 20
1.8  類型轉換 23
1.9  小結 25
第2章 上下文管理器 27
2.1  上下文管理器的定義 27
2.2  上下文管理器的語法 28
2.2.1  with語句 28
2.2.2  enter和exit方法 28
2.2.3  異常處理 29
2.3  何時應該編寫上下文管理器 30
2.3.1  資源清理 30
2.3.2  避免重復 31
2.4  更簡單的語法 38
2.5  小結 39
第3章 生成器 41
3.1  理解生成器 41
3.2  理解生成器語法 41
3.2.1  next函數 43
3.2.2  StopIteration異常 45
3.3  生成器之間的交互 47
3.4  迭代對象與迭代器 49
3.5  標準庫中的生成器 50
3.5.1  range 50
3.5.2  dict.items及其傢族 50
3.5.3  zip  51
3.5.4  map  52
3.5.5  文件對象 52
3.6  何時編寫生成器 53
3.6.1  分塊訪問數據 53
3.6.2  分塊計算數據 54
3.7  何時使用生成器單例模式 54
3.8  生成器內部的生成器 55
3.9 小結 56
第Ⅱ部分  類
第4章 魔術方法 59
4.1  魔術方法語法 59
4.2  可用的魔術方法 60
4.2.1  創建與銷毀 61
4.2.2  類型轉換 63
4.2.3  比較 65
4.3  其他魔術方法 75
4.4  小結 76
第5章 元類 77
5.1  類與對象 77
5.1.1  直接使用type 78
5.1.2  type鏈 80
5.1.3  type的角色 80
5.2  編寫元類 81
5.2.1  __new__方法 81
5.2.2  __new__與__init__方法 81
5.2.3  元類示例 82
5.2.4  元類繼承 82
5.3  使用元類 84
5.3.1  Python 3 85
5.3.2  Python 2 85
5.3.3  需要跨版本執行的代碼怎麼辦 85
5.3.4  跨版本兼容性在何時重要 86
5.4  何時使用元類 87
5.4.1  說明性類聲明 87
5.4.2  類驗證 88
5.4.3  非繼承屬性 90
5.5  顯式選擇的問題 91
5.6  meta-coding 92
5.7  小結 94
第6章 類工廠 95
6.1  類型迴顧 95
6.2  理解類工廠函數 96
6.3  決定何時應該編寫類工廠 98
6.3.1  運行時屬性 98
6.3.2  避免類屬性一緻性問題 102
6.3.3  關於單例模式問題的解答 105
6.4  小結 107
第7章 抽象基類 109
7.1  使用抽象基類 109
7.2  聲明虛擬子類 110
7.2.1  聲明虛擬子類的原因 111
7.2.2  使用register作為裝飾器 113
7.2.3  __subclasshook__ 113
7.3  聲明協議 115
7.3.1  其他現有的方法 115
7.3.2  抽象基類的價值 118
7.3.3  抽象屬性 120
7.3.4  抽象類或靜態方法 121
7.4  內置抽象基類 122
7.4.1  隻包含一個方法的抽象基類 122
7.4.2  可供集閤使用的抽象基類 123
7.4.3  額外的抽象基類 124
7.5  小結 124
第Ⅲ部分  數    據
第8章 字符串與Unicode 127
8.1  文本字符串與字節字符串 127
8.2  包含非ASCII字符的字符串 132
8.2.1  觀察區彆 132
8.2.2  Unicode是ASCII的超集 133
8.3  其他編碼 133
8.4  讀取文件 135
8.4.1  Python 3 135
8.4.2  Python 2 137
8.4.3  讀取其他源 137
8.4.4  指定Python文件編碼 137
8.5  嚴格編碼 139
8.5.1  不觸發錯誤 139
8.5.2  注冊錯誤處理程序 140
8.6  小結 141
第9章 正則錶達式 143
9.1  使用正則錶達式的原因 143
9.2  Python中的正則錶達式 144
9.2.1  原始字符串 144
9.2.2  match對象 145
9.2.3  找到多個匹配 145
9.3  基本正則錶達式 146
9.3.1  字符組 146
9.3.2  可選字符 150
9.3.3  重復 151
9.4  分組 152
9.4.1  零分組 154
9.4.2  命名分組 155
9.4.3  引用已經存在的分組 156
9.5  先行斷言 157
9.6  標記 158
9.6.1  不區分大小寫 158
9.6.2  ASCII 與 Unicode 159
9.6.3  點匹配換行符 159
9.6.4  多行模式 159
9.6.5  詳細模式 160
9.6.6  調試模式 160
9.6.7  使用多個標記 160
9.6.8  內聯標記 160
9.7  替換 161
9.8  已編譯的正則錶達式 162
9.9  小結 163
第Ⅳ部分  其他高級主題
第10章 Python 2與Python 3 167
10.1  跨版本兼容性策略 167
10.1.1  __future__模塊 168
10.1.2  2to3 168
10.1.3  限製 170
10.1.4  six  170
10.2  Python 3中的變更 171
10.2.1  字符串與Unicode 171
10.2.2  Print函數 171
10.2.3  除法 172
10.2.4  絕對與相對導入 173
10.2.5  “老式風格”類的移除 174
10.2.6  元類語法 175
10.2.7  異常語法 176
10.2.8  字典方法 178
10.2.9  函數方法 179
10.2.10  迭代器 179
10.3  標準庫重定位 180
10.3.1  閤並“高效”模塊 180
10.3.2  URL模塊 181
10.3.3  重命名 181
10.3.4  其他包重組 181
10.4  版本檢測 182
10.5  小結 182
第11章 單元測試 183
11.1  測試的連續性 183
11.1.1  副本生態係統 183
11.1.2  隔離的環境 184
11.1.3  優點與缺點 185
11.2  測試代碼 185
11.2.1  代碼布局 186
11.2.2  測試函數 186
11.2.3  assert語句 188
11.3  單元測試框架 188
11.3.1  執行單元測試 189
11.3.2  載入測試 192
11.4  模擬 193
11.4.1  模擬函數調用 193
11.4.2  斷言被模擬的調用 195
11.4.3  檢查模擬 197
11.4.4  檢查調用 199
11.5  其他測試工具 199
11.6  小結 201
第12章 CLI工具 203
12.1  optparse 203
12.1.1  一個簡單的參數 203
12.1.2  選項 205
12.1.3  使用optparse的原因 212
12.2  argparse 213
12.2.1  本質 213
12.2.2  參數與選項 214
12.2.3  使用argparse的理由 220
12.3  小結 221
第13章 asyncio模塊 223
13.1  事件循環 223
13.2  協程 227
13.3  Future對象與Task對象 229
13.3.1  Future對象 229
13.3.2  Task對象 230
13.4  迴調 231
13.4.1  不保證成功 232
13.4.2  幕後 232
13.4.3  帶參數的迴調 233
13.5  任務聚閤 233
13.5.1  聚集任務 234
13.5.2  等待任務 235
13.6  隊列 238
13.7  服務器 240
13.8  小結 242
第14章 代碼風格 243
14.1  原則 243
14.1.1  假定你的代碼需要維護 243
14.1.2  保持一緻性 244
14.1.3  考慮對象在程序中的存在方式,
尤其是那些帶有數據的
對象 244
14.1.4  不要做重復工作 244
14.1.5  讓注釋講故事 245
14.1.6  奧卡姆剃刀原則 245
14.2  標準 245
14.2.1  簡潔的規則 246
14.2.2  文檔字符串 246
14.2.3  空行 246
14.2.4  導入 247
14.2.5  變量 247
14.2.6  注釋 248
14.2.7  行長度 248
14.3  小結 249
  最近,Python已經成為越來越多開發人員的首選語言。Python的使用者遍布全球,他們將該語言用於各種目的。隨著Python的廣泛應用,越來越多的開發人員都在花時間編寫Python。
  Python穩定增長的原因在於它是一門強大的語言,但很多經驗豐富的Python開發人員也僅僅瞭解該語言所能完成工作的冰山一角。
  本書讀者對象
  本書的目標讀者是那些已經使用Python工作並熟悉它,而且希望進一步學習的開發人員。本書假定讀者已經完成過Python開發過程中的大多數基本任務(例如使用過Python交互式終端)。
  如果你是希望尋求由中級到高級的Python語言功能的讀者,就應該從頭至尾閱讀本書。
  你也可能曾經使用過更高級的語言功能,或可能需要維護使用這些功能的代碼,那麼可以考慮將本書作為參考手冊;或者處理具體實現代碼時可以將本書作為索引,從而充實對高級功能的理解。
  本書內容
  本書涵蓋所有*新版本的Python(包括Python 2與Python 3)。在編寫本書時,*新的可用版本是Python 3.4,Python 3.5還是beta版。本書主要涵蓋瞭Python 2.6/2.7/3.3/3.4。本書提供的大多數代碼既能在Python 2上運行,也能在Python 3上運行,Python 2代碼會特彆標注齣來。
  此外,本書還占用一整章的篇幅深入講解Python 2與Python 3的區彆,其中提供瞭編寫跨版本運行代碼的建議,以及如何將代碼移植到Python 3。
  本書主要集中在兩個領域。第一個領域是語言功能本身。例如,本書用幾章闡述關於Python類與對象模型工作機製的多個方麵。第二個領域是作為標準庫的一部分提供的模塊。例如,本書用3章闡述瞭3個模塊:asyncio、unittest與argparse。
  本書結構
  本書可以分為4個部分:
  本書的前3章介紹Python中的函數。前兩章分彆闡述裝飾器與上下文管理器,它們是用於修改或為增加功能封裝函數的可重用方式。第3章則是關於生成器的內容,生成器是一種設計函數的方法,它可以使函數一次返迴一個值,而不是提前創建一整列值並將其一次性返迴。
  第Ⅱ部分包含第4~7章,介紹Python類與語言對象模型。第4章闡述魔術方法,第5章和第6章分彆闡述元類和類工廠,這是以強大方式構建類的兩種方式。*後,第7章闡述抽象基類,解釋abc模塊,以及如何讓類來聲明實現的模式。
  第Ⅲ部分包含第8章和第9章,介紹字符串與數據。第8章闡述如何在Python中使用Unicode字符串(與使用字節字符串相比較),詳細介紹瞭在Python 2與Python 3中字符串的區彆。第9章則闡述正則錶達式,包含瞭Python的re模塊,以及如何編寫正則錶達式。
  *後,第Ⅳ部分包含無法融入前三部分的所有內容。第10章深入介紹Python 2與Python 3的區彆,以及如何編寫能夠兼容這兩個平颱的代碼。第11章介紹單元測試,主要關注unittest模塊。關於命令行界麵(CLI)工具的第12章介紹有關optparse與argparse的內容,這兩個Python模塊用於編寫命令行工具。第13章介紹asyncio,它是一個新的異步編程庫,在Python 3.4中被引入到Python標準庫。第14章介紹代碼風格。
  使用本書的前提條件
  首先,需要一颱運行Python的計算機。
  雖然在大多數章節中沒有區彆,但本書在方法上稍微有點以Linux為中心(在第12章區彆*大)。本書的示例在Linux環境中運行,如果在Windows環境中運行,輸齣結果可能會有略微不同。
  勘誤錶
  盡管我們已經盡瞭各種努力來保證書中或代碼中不齣現錯誤,但是人無完人,錯誤在所難免。如果發現本書中的錯誤,如拼寫錯誤或代碼錯誤,請告訴我們,我們將不勝感激。通過發送勘誤錶,可以讓其他讀者避免幾個小時的睏惑,同時可以幫助我們提供更高質量的信息。
  要在網站上找到本書的勘誤錶,請訪問http://www.wrox.com網頁,點擊勘誤錶鏈接。在這個網頁上,您能看到本書提供的和Wrox編輯發布的所有勘誤錶。
  如果在本書勘誤頁麵上找不到提供的勘誤錶,請訪問www.wrox.com/contact/ techsupport.shtml網頁,填寫那個網頁上的錶格並且發給我們您發現的錯誤。我們將核對反饋信息,如果正確,我們將在本書的勘誤錶頁麵張貼該錯誤消息,並在本書後續版本中修正這一問題。
  P2P.wrox.com
  要與作者和同行討論,請加入p2p.wrox.com網站上的P2P論壇。這個論壇是一個基於Web的係統,可以張貼與Wrox圖書相關的消息和相關技術,與其他讀者和技術用戶交流心得。該論壇提供電子郵件訂閱功能,當論壇上有新貼發布時,可以給你傳送你選擇的感興趣的論題。Wrox作者、編輯和其他業界專傢和讀者都會到這個論壇上來探討問題。
  在http://p2p.wrox.com上,你將發現許多不同的論壇,它們不僅有助於你閱讀本書,而且還有助於你開發自己的應用程序。要加入論壇,可以遵循下麵的步驟:
  (1) 進入p2p.wrox.com,單擊Register鏈接。
  (2) 閱讀使用協議,並單擊Agree按鈕。
  (3) 填寫加入該論壇所需要的信息和自己希望提供的其他可選信息,單擊Submit按鈕。
  (4) 你會收到一封電子郵件,其中的信息描述瞭如何驗證賬戶,完成加入過程。
  加入論壇後,可以發布新消息和迴復其他用戶發布的信息。可以隨時閱讀這個網站上的信息。如果想收到特定論壇發來的新消息,單擊論壇列錶中該論壇名旁邊的Subscribe to this Forum圖標。
  要想更多瞭解如何使用Wrox P2P的信息,一定要閱讀FAQ,瞭解有關論壇軟件的工作情況,以及P2P和Wrox圖書的許多常見問題的解答。要閱讀FAQ,隻需要在任意P2P頁麵上單擊FAQ鏈接即可。
這本書的齣版,無疑為廣大Python開發者提供瞭一個深入理解Python精髓的絕佳機會。我特彆喜歡其中關於“並發與並行”的章節,作者不僅清晰地闡述瞭綫程、進程和協程之間的區彆,還深入剖析瞭它們在實際應用中的優劣勢。書中的代碼示例非常具有指導意義,通過對這些例子的學習,我能夠更好地理解如何在Python中實現高效的並發處理,尤其是在處理CPU密集型和I/O密集型任務時,選擇閤適的並發模型至關重要。此外,書中對“性能優化”的探討也極具價值。作者沒有停留在錶麵,而是深入到字節碼層麵,講解瞭如何利用C擴展、Cython等工具來提升Python代碼的執行效率,這對於開發高性能的Python應用至關重要。整本書的邏輯清晰,語言流暢,即使是對於一些相對復雜的概念,作者也能用通俗易懂的方式進行解釋,使得讀者能夠輕鬆地理解和掌握。
評分對於我這種有一定Python基礎,但想進一步提升編程技藝的讀者來說,這本書簡直就是一座寶藏。它的內容深度和廣度都非常令人滿意。書中關於“異步編程”的章節,是我最期待的部分之一。作者用非常清晰的語言解釋瞭`async/await`的原理,並提供瞭大量使用`asyncio`庫進行網絡通信和I/O密集型任務的示例。我過去一直對異步編程感到頭疼,覺得概念抽象,但通過這本書,我終於能夠理解其背後的邏輯,並且能夠實際編寫齣高效的異步代碼。此外,書中對“設計模式”在Python中的應用也進行瞭深入的探討,從單例模式到工廠模式,再到觀察者模式,作者都結閤Python的特性給齣瞭非常實用的實現方法,這對於我構建更具擴展性和可維護性的係統非常有幫助。這本書給我最大的感受是,它不僅僅是教授Python的語法,更是傳授一種“Pythonic”的編程哲學,一種更優雅、更高效的解決問題的方式。
評分這本《Python高級編程》簡直是為我量身定做的。我一直覺得自己在Python方麵雖然熟悉基本語法,但總感覺缺少瞭一些“內功”。這本書正好填補瞭我的這一塊空白。它並沒有一開始就拋齣一些晦澀難懂的概念,而是從一個非常接地氣的角度齣發,比如如何寫齣更具可讀性、可維護性的代碼。書中關於“生成器”和“迭代器”的部分,講解得特彆透徹,讓我徹底理解瞭Python的惰性求值機製,以及它在處理大規模數據時的巨大優勢。作者還引入瞭一些關於“元類”的討論,雖然這個概念一開始聽起來有些高大上,但通過書中生動的比喻和代碼演示,我竟然也慢慢領悟瞭它的奧妙,並開始思考它在框架設計中的潛在應用。更讓我驚喜的是,書中還深入探討瞭GIL(全局解釋器鎖)的原理及其對並發編程的影響,這對我理解Python多綫程的局限性以及如何繞過它(例如使用多進程)有瞭清晰的認識。我迫不及待地想將這些知識應用到我正在開發的項目中,相信它能讓我的代碼更加高效、健壯。
評分這本書的封麵設計非常吸引人,深邃的藍色背景配上簡潔有力的白色字體,讓人一眼就能感受到一種沉穩而專業的氛圍。翻開書頁,紙張的觸感也相當不錯,厚實且有質感,印刷清晰,排版閤理,即使長時間閱讀也不會感到疲勞。我尤其喜歡它在章節劃分上的細緻,每個主題都得到瞭充分的展開,沒有那種淺嘗輒止的感覺。作者在講解理論知識時,總是能結閤大量實際應用的案例,這一點非常寶貴。我最印象深刻的是關於“裝飾器”那一章,作者循序漸進地從基礎概念講到高級用法,甚至還提到瞭裝飾器工廠和類裝飾器的應用,這對於我理解如何優雅地擴展函數功能起到瞭至關重要的作用。書中穿插的各種代碼片段都經過瞭精心篩選,不僅演示瞭核心概念,還融入瞭一些工程實踐中的最佳寫法,比如如何進行清晰的代碼組織和閤理的錯誤處理。總的來說,這本書給我一種“乾貨滿滿”的感覺,不僅僅是知識的堆砌,更是一種思維方式的引導,讓我對Python的理解上升到瞭一個新的高度。
評分我一直對Python的底層機製感到好奇,而這本書恰好滿足瞭我的求知欲。它沒有迴避那些看似復雜的技術細節,而是以一種非常係統的方式進行講解。例如,關於“內存管理”的部分,作者詳細解釋瞭Python對象的生命周期、引用計數以及垃圾迴收機製,這讓我對Python如何處理內存有瞭更清晰的認識,也理解瞭為什麼某些代碼片段會造成內存泄漏。書中關於“模塊化和包管理”的章節,也為我提供瞭很多寶貴的經驗,讓我學會如何更好地組織大型項目,如何創建可復用的代碼庫,以及如何有效地利用現有的第三方庫。我特彆欣賞作者在講解中那種嚴謹的態度,每一個概念都經過瞭反復推敲,每一個示例都經過瞭仔細驗證。這本書不是那種翻幾遍就能完全掌握的書,它更像是一本可以反復查閱的參考手冊,每一次閱讀都能有新的發現和感悟。
評分品相佳,送貨及時,活動給力,滿意。
評分適閤有一定基礎的pythoner
評分有一點深奧!需要很好的基礎!
評分有一些彆的書上沒有的內容,總體來說,還可以。
評分尚未開封,挺薄的,等基礎紮實在看
評分好
評分不錯,送貨很快,買東西方便
評分好
評分好
本站所有內容均為互聯網搜尋引擎提供的公開搜索信息,本站不存儲任何數據與內容,任何內容與數據均與本站無關,如有需要請聯繫相關搜索引擎包括但不限於百度,google,bing,sogou 等
© 2025 book.coffeedeals.club All Rights Reserved. 靜流書站 版權所有