Python 3高級教程(第3版)

[美]J.伯頓·布朗寧(J.Burton Browning),[美]馬蒂·阿爾金(Marty Alchin) 著; 楊慶麟 譯

  • 出版商: 清華大學
  • 出版日期: 2020-10-01
  • 定價: $534
  • 售價: 8.5$454
  • 語言: 簡體中文
  • ISBN: 7302563551
  • ISBN-13: 9787302563556
  • 相關分類: Python程式語言
  • 立即出貨

  • Python 3高級教程(第3版)-preview-1
  • Python 3高級教程(第3版)-preview-2
  • Python 3高級教程(第3版)-preview-3
Python 3高級教程(第3版)-preview-1

買這商品的人也買了...

相關主題

商品描述

《Python 3高級教程(第3版)》將引導你改進編程技術和方法,成為一名更具生產力和創造性的Python程序員。書中探討的一些概念和特性不僅可以幫助你改進代碼,而且還將加深你對Python社區中有關Python的哲學見解和細節理解。 《Python 3高級教程(第3版)》提供的一些工具有助於你編寫簡潔的創新性代碼。書中首先回顧了Python的一些核心指導原則,這些指導原則將在本書後面的各種概念和示例中加以說明。本書的前半部分探討了函數、類、協議和字符串的各個方面,並介紹了一些可能不是常識的技術,它們共同為你構築堅實的Python編程基礎。本書的後半部分涵蓋了文檔、測試和應用的發布。通過學習本書,你將能夠開發一個復雜的Python框架,其中包含貫穿全書的思想。 作為第3版,本書新增和更新的內容包括迭代器在Python 3中的作用、使用Scrapy和Beautful Soup進行Web抓取、使用Requests調用沒有字符串的Web頁面、用於分發和安裝的新工具,等等。在本書的最後,你還將學習一些不常見的特性,從而將自己的Python技能提升到一個新的高度。 主要內容 使用各類Python函數實現程序 使用類和麵向對象編程 使用標準庫和第三方庫中的字符串 使用Python獲取網站數據 編寫測試套件以實現自動化單元測試 回顧成像、隨機數生成和NumPy科學擴展 瞭解Python文檔的玄機,確定分發代碼的更佳方式

目錄大綱

目    錄

第1章  原理與哲學   1

1.1  Python之禪   1

1.1.1  優美勝於醜陋   3

1.1.2  明瞭勝於晦澀   3

1.1.3  簡潔勝於復雜   4

1.1.4  復雜勝於難以理解   5

1.1.5  扁平勝於嵌套   5

1.1.6  寬松勝於緊湊   6

1.1.7  可讀性很重要   7

1.1.8  即便是特例,也不可違背這些規則   8

1.1.9  實用性勝於純粹性   8

1.1.10  錯誤永遠不應該悄無聲息地過去   9

1.1.11  除非明確地沉默   10

1.1.12  面對模棱兩可的情況,拒絕猜測的誘惑   11

1.1.13  應該有一種(最好只有一種)顯而易見的方法   12

1.1.14  盡管這種方式起初可能並不明顯,除非你是荷蘭人   13

1.1.15  做比不做要好   13

1.1.16  不假思索就動手還不如不做   14

1.1.17  如果實現難以解釋,那就是一個糟糕的想法   14

1.1.18  如果實現容易解釋,則可能是一個好主意   14

1.1.19  命名空間是一個很棒的想法,讓我們做更多這樣的事情吧   15

1.2  不要重復自己   15

1.3  松耦合   16

1.4  武士原則   16

1.5  帕累托原則   17

1.6  穩健性原則   17

1.7  向後兼容性   19

1.8  小結   19

第2章  基礎知識   20

2.1  總體概念   20

2.1.1  迭代   20

2.1.2  緩存   22

2.1.3  透明度   23

2.2  流程控制   23

2.2.1  捕獲異常   24

2.2.2  異常鏈   27

2.2.3  當一切順利的時候   29

2.2.4  繼續執行,無論異常如何   31

2.2.5  優化循環   32

2.2.6  with語句   33

2.2.7  條件表達式   34

2.3  迭代   36

2.3.1  序列解包   37

2.3.2  列表解析式   39

2.3.3  生成器表達式   40

2.3.4  集合解析式   41

2.3.5  字典解析式   41

2.3.6  將迭代器鏈接在一起   42

2.3.7  將迭代器壓縮在一起   42

2.4  容器數據類型   43

2.4.1  集合   43

2.4.2  命名元組   48

2.4.3  有序字典   48

2.4.4  帶有默認值的字典   49

2.5  導入代碼   50

2.5.1  回退(備用)導入   50

2.5.2  從即將發布的版本中導入   51

2.5.3  使用__all__進行自定義導入   52

2.5.4  相對導入   54

2.5.5  __import__()函數   54

2.5.6  importlib模塊   57

2.6  令人興奮的Python擴展:NIST的隨機數信標   57

2.6.1  如何安裝NIST信標庫   58

2.6.2  示例:獲取值   58

2.6.3  示例:模擬拋硬幣並記錄每次正反面的結果   59

2.7  小結   59

第3章  函數   60

3.1  參數   61

3.1.1  規劃時的靈活性   61

3.1.2  可變位置參數   62

3.1.3  可變關鍵字參數   63

3.1.4  組合不同類型的參數   64

3.1.5  調用具有可變參數的函數   67

3.1.6  傳遞參數   67

3.1.7  自省   69

3.1.8  示例:標識參數值   70

3.1.9  示例:一個更簡潔的版本   72

3.1.10  示例:驗證參數   75

3.2  裝飾器   76

3.2.1  閉包   78

3.2.2  包裝器   80

3.2.3  帶參數的裝飾器   81

3.2.4  帶參數或不帶參數的裝飾器   83

3.2.5  示例:記憶化   85

3.2.6  示例:用於創建裝飾器的裝飾器   86

3.3  函數註解   88

3.3.1  示例:類型安全   89

3.3.2  提取樣板   97

3.3.3  示例:類型強制轉換   100

3.3.4  用裝飾器進行註解   102

3.3.5  示例:將類型安全作為裝飾器   102

3.4  生成器   107

3.5  lambda   109

3.6  自省   110

3.6.1  標識對象類型   111

3.6.2  模塊和軟件包   112

3.6.3  文檔字符串   112

3.7  令人興奮的Python擴展:統計   115

3.7.1  安裝Pandas和matplotlib   115

3.7.2  創建文本文件   115

3.7.3  使用Pandas顯示數據   116

3.7.4  進行一些數據分析   116

3.7.5  使用matplotlib進行繪圖   117

3.7.6  圖表的類型   117

3.7.7  將matplotlib與Pandas結合起來   118

3.8  小結   118

第4章  類   119

4.1  繼承   119

4.1.1  多重繼承   122

4.1.2  方法解析順序   123

4.1.3  示例:C3算法   127

4.1.4  使用super()函數將控制權傳遞給其他類   134

4.1.5  自省   137

4.2  如何創建類   139

4.2.1  在運行時創建類   140

4.2.2  元類   141

4.2.3  示例:插件框架   142

4.2.4  控制命名空間   145

4.3  成員變量   147

4.3.1  屬性   147

4.3.2  描述器   149

4.4  方法   152

4.4.1  非綁定方法   152

4.4.2  綁定方法   153

4.5  魔術方法   156

4.5.1  創建實例   157

4.5.2  示例:自動化子類   158

4.5.3  處理成員變量   159

4.5.4  字符串表示   162

4.6  令人興奮的Python擴展:迭代器   164

4.7  小結   166

第5章  通用協議   167

5.1  基本運算   167

5.1.1  數學運算   169

5.1.2  按位運算   173

5.1.3  運算符的變體   175

5.2  數字   177

5.2.1  符號運算   180

5.2.2  比較運算   180

5.3  可迭代對象   181

5.4  序列   186

5.5  映射   191

5.6  _call_()方法   192

5.7  上下文管理器   193

5.8  令人興奮的Python擴展:Scrapy   195

5.8.1  安裝Scrapy   196

5.8.2  運行Scrapy   196

5.8.3  項目設置   196

5.8.4  使用Scrapy獲取Web數據   197

5.8.5  通過Scrapy瀏覽網頁   198

5.8.6  shell選項   198

5.9  小結   199

第6章  對象管理   200

6.1  命名空間字典   201

6.1.1  示例:Borg模式   201

6.1.2  示例:自緩存屬性   205

6.2  垃圾回收   209

6.2.1  引用計數   210

6.2.2  循環引用   211

6.2.3  弱引用   214

6.3  Python對象的序列化   216

6.4  復制   221

6.4.1  淺層復制   222

6.4.2  深層復制   224

6.5  令人興奮的Python擴展:Beautiful Soup   226

6.5.1  安裝Beautiful Soup   226

6.5.2  使用Beautiful Soup   226

6.6  小結   227

第7章  字符串   228

7.1  字節字符串   228

7.1.1  借助chr()和ord()進行簡單的轉換   229

7.1.2  借助struct模塊進行復雜的轉換   230

7.2  文本   233

7.2.1  Unicode   234

7.2.2  編碼   234

7.3  簡單的替換   236

7.4  格式化   238

7.4.1  在對象中查找值   240

7.4.2  區分字符串類型   240

7.4.3  標準格式規範   240

7.4.4  為文本文檔製作目錄   242

7.4.5  自定義格式規範   244

7.5  令人興奮的Python擴展:feedparser庫   245

7.5.1  如何安裝feedparser庫   245

7.5.2  如何使用feedparser庫   245

7.6  小結   246

第8章  文檔的編寫   247

8.1  恰當地命名   247

8.2  註釋   248

8.3  文檔字符串   249

8.3.1  描述函數的作用   250

8.3.2  解釋參數   250

8.3.3  返回值   250

8.3.4  包含預期的異常   251

8.4  代碼之外的文檔   251

8.4.1  安裝與配置   251

8.4.2  教程   251

8.4.3  參考文檔   252

8.5  用於編寫文檔的實用工具   252

8.5.1  格式化   253

8.5.2  鏈接   254

8.5.3  Sphinx   256

8.6  令人興奮的Python擴展:NumPy   256

8.6.1  安裝NumPy   256

8.6.2  使用NumPy   257

8.6.3  使用NumPy數組   258

8.6.4  統計度量   258

8.7  小結   259

第9章  測試   260

9.1  測試驅動開發   260

9.2  doctest   261

9.2.1  格式化代碼   261

9.2.2  呈現輸出   262

9.2.3  與文檔集成   263

9.2.4  運行測試   263

9.3  unittest模塊   265

9.3.1  初始化配置   265

9.3.2  編寫測試   266

9.3.3  其他比較   270

9.3.4  測試字符串和其他序列內容   270

9.3.5  測試異常   271

9.3.6  測試對象標識   273

9.3.7  釋放資源   273

9.4  提供自定義的測試類   274

9.5  令人興奮的Python擴展:Pillow庫   274

9.5.1  如何安裝Pillow庫   275

9.5.2  圖像顯示:確定文件的大小和類型並顯示   275

9.5.3  圖像處理:裁剪圖像的一部分   275

9.5.4  圖像處理:改變圖像的方向   276

9.5.5  圖像處理:濾鏡   276

9.6  小結   276

第10章  發布   277

10.1  許可證   277

10.1.1  GNU通用公共許可證   277

10.1.2  Affero通用公共許可證   279

10.1.3  GNU 寬通用公共許可證   279

10.1.4  伯克利軟件發行許可證   280

10.1.5  其他許可證   280

10.2  打包   281

10.2.1  setup.py   282

10.2.2  MANIFEST.in   284

10.2.3  sdist命令   285

10.3  發布   286

10.4  令人興奮的Python擴展:secrets模塊   288

10.4.1  隨機數   288

10.4.2  密碼生成器   288

10.5  小結   289

第11章  構建CSV框架sheets   290

11.1  構建聲明性框架   291

11.1.1  聲明性編程簡介   291

11.1.2  是否構建聲明性框架   292

11.2  構建框架   293

11.2.1  管理選項   294

11.2.2  定義字段   297

11.2.3  將字段附加到類   298

11.2.4  添加元類   300

11.2.5  整合   303

11.3  字段排序   304

11.3.1  DeclarativeMeta.__prepare__()   305

11.3.2  Column.__init__()   307

11.3.3  Column.__new__()   310

11.3.4  CounterMeta.__call__()   311

11.3.5  挑選選項   313

11.4  構建字段庫   313

11.4.1  StringField(字符串字段)   315

11.4.2  IntegerColumn(整數列)   315

11.4.3  FloatColumn(浮點數列)   316

11.4.4  DecimalColumn(小數列)   316

11.4.5  DateColumn(日期列)   317

11.5  回到CSV   321

11.5.1  檢查參數   322

11.5.2  填充值   324

11.5.3  讀取器   327

11.5.4  寫入器   331

11.6  小結   334