Python 編程入門與實戰, 3/e

[意]法布里奇奧·羅馬諾(Fabrizio Romano)[英]海因里希·克魯格(Heinrich Kruger)

  • Python 編程入門與實戰, 3/e-preview-1
  • Python 編程入門與實戰, 3/e-preview-2
Python 編程入門與實戰, 3/e-preview-1

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

商品描述

本書是一本系統介紹Python編程,並針對多個應用場景給出解決方案的編程手冊。

從Python的基礎知識開始,介紹了數據類型、函數、條件、循環等基本概念,展示了生成器、面向對象編程等具有Python特色的進階理念,並給出了定位和排除異常、測試代碼、調試的方法。

隨後,本書針對GUI、數據科學等實用場景,使用Python解決實際問題。

最後,本書給出了發布Python程序的方法。 本書適合想要學習編程或有一定編程基礎、想要學習Python的人閱讀。

作者簡介

Fabrizio Romano于1975年出生于意大利。他获得了帕多瓦大学计算机科学工程的硕士学位。他从1999年开始就成为一名专业的软件开发人员。Fabrizio自2016年起成为Sohonet的产品小组的成员。

 

Heinrich Kruger于1981年出生于南非。他获得了荷兰乌德勒支大学的计算机科学硕士学位。他从2014年开始成为一名专业的软件开发人员,并从2017年开始加入Sohonet的产品小组,成为Fabrizio的同事。

目錄大綱

第 1章 Python概述 1

1.1 編程預備知識 2

1.2 走近Python 3

1.3 關於Python 4

可移植性 4

一致性 4

開發人員的效率 4

廣泛的程序庫 5

軟件質量 5

軟件集成 5

滿足感和樂趣 5

1.4 Python有什麽缺點嗎? 5

1.5 當前的Python用戶 6

1.6 安裝環境 6

1.6.1 Python 2和Python 3 6

1.7 安裝Python 7

1.7.1 安裝Python解釋器 7

1.7.2 關於虛擬環境 9

1.7.3 第 一個虛擬環境 10

1.7.4 安裝第三方程序庫 12

1.7.5 控制台是我們的好幫手 13

1.8 怎樣運行Python程序 13

1.8.1 運行Python腳本 13

1.8.2 在交互式shell中運行Python 14

1.8.3 以服務的形式運行Python 15

1.8.4 以GUI應用程序的形式運行Python 15

1.9 Python代碼的組織形式 16

1.9.1 使用模塊和程序包 17

1.10 Python的執行模型 18

1.10.1 名稱和名字空間 19

1.10.2 作用域 20

1.10.3 對象和類 23

1.11 編寫優質代碼的指導原則 25

1.12 Python的文化 26

1.13 關於IDE的說明 27

1.14 總結 28

第 2章 內置的數據類型 29

2.1 一切皆是對象 29

2.2 可變還是不可變?這個是

問題 30

2.3 數值 32

2.3.1 整數 32

2.3.2 布爾值 34

2.3.3 實數 35

2.3.4 復數 36

2.3.5 分數和小數 36

2.4 不可變序列 37

2.4.1 字符串和bytes(字節) 37

2.4.2 元組 41

2.5 可變序列 42

2.5.1 列表 42

2.5.2 bytearray(字節數組) 45

2.6 集合類型 46

2.7 映射類型—字典 48

2.8 數據類型 51

2.8.1 日期和時間 52

2.8.2 collections模塊 56

2.9 枚舉 60

2.10 最後的考慮 60

2.10.1 小值緩存 61

2.10.2 如何選擇數據結構 61

2.10.3 關於索引和截取 62

2.10.4 關於名稱 63

2.11 總結 64

第3章 迭代和決策 65

3.1 條件編程 65

3.1.1 一種特殊的else:elif 66

3.1.2 三元操作符 68

3.2 循環 69

3.2.1 for循環 69

3.2.2 迭代器和可迭代對象 71

3.2.3 對多個序列進行迭代 72

3.2.4 while循環 74

3.2.5 break和continue語句 76

3.2.6 一種特殊的else子句 77

3.3 賦值表達式 79

3.3.1 語句和表達式 79

3.3.2 使用海象操作符 80

3.3.3 告誡 81

3.4 綜合應用 81

3.4.1 質數生成器 81

3.4.2 應用折扣 83

3.5 itertools模塊速覽 86

3.5.1 無限迭代器 86

3.5.2 終止於最短輸入序列的

迭代器 86

3.5.3 組合迭代器 87

3.6 總結 88

第4章 函數,代碼的基本構件 89

4.1 為什麽要使用函數? 90

4.1.1 減少代碼的重復 90

4.1.2 分割復雜任務 91

4.1.3 隱藏實現細節 91

4.1.4 提高可讀性 92

4.1.5 提高可追蹤性 92

4.2 作用域和名稱解析 93

4.2.1 global和nonlocal語句 95

4.3 輸入參數 96

4.3.1 實際參數的傳遞 97

4.3.2 形式參數名稱的賦值 97

4.3.3 修改可變對象 98

4.3.4 傳遞實際參數 99

4.3.5 定義形式參數 101

4.4 返回值 109

4.4.1 返回多個值 110

4.5 一些實用的提示 111

4.6 遞歸函數 112

4.7 匿名函數 113

4.8 函數的屬性 114

4.9 內置函數 115

4.10 代碼的文檔和註釋 115

4.11 導入對象 116

4.11.1 相對導入 117

4.12 最後一個例子 118

4.13 總結 119

第5章 解析和生成器 120

5.1 map、zip、filter函數 121

5.1.1 map 121

5.1.2 zip 124

5.1.3 filter 125

5.2 解析 125

5.2.1 嵌套的解析 126

5.2.2 對解析進行過濾 127

5.2.3 字典解析 129

5.2.4 集合解析 130

5.3 生成器 130

5.3.1 生成器函數 130

5.3.2 next的幕後 133

5.3.3 yield from表達式 135

5.3.4 生成器表達式 136

5.4 性能上的考慮 138

5.5 不要過度使用解析和生成器 141

5.6 名稱局部化 143

5.7 內置的生成行為 144

5.8 最後一個例子 145

5.9 總結 146

第6章 面向對象編程、裝飾器和

迭代器 148

6.1 裝飾器 148

6.1.1 裝飾器工廠 153

6.2 面向對象編程(OOP) 155

6.2.1 最簡單的Python類 155

6.2.2 類和對象的名字空間 156

6.2.3 屬性屏蔽 157

6.2.4 使用self變量 158

6.2.5 實例的初始化 159

6.2.6 OOP與代碼復用有關 159

6.2.7 訪問基類 164

6.2.8 多重繼承 165

6.2.9 類方法和靜態方法 169

6.2.10 私有方法和名稱改寫 173

6.2.11 property裝飾器 175

6.2.12 cached_property裝飾器 176

6.2.13 操作符重載 178

6.2.14 多態——簡單說明 178

6.2.15 數據類 179

6.3 編寫自定義的迭代器 180

6.4 總結 181

第7章 異常和上下文管理器 182

7.1 異常 182

7.1.1 觸發異常 184

7.1.2 自定義異常類 184

7.1.3 回溯 184

7.1.4 處理異常 185

7.1.5 不僅僅用於錯誤 188

7.2 上下文管理器 189

7.2.1 基於類的上下文管理器 191

7.2.2 基於生成器的上下文

管理器 192

7.3 總結 194

第8章 文件和數據持久化 195

8.1 操作文件和目錄 195

8.1.1 打開文件 196

8.1.2 讀取和寫入文件 197

8.1.3 檢查文件和目錄是否存在 199

8.1.4 對文件和目錄進行操作 200

8.1.5 臨時文件和臨時目錄 202

8.1.6 目錄的內容 203

8.1.7 文件和目錄的壓縮 204

8.2 數據交換格式 204

8.2.1 使用JSON 205

8.3 I/O、流和請求 211

8.3.2 創建HTTP請求 212

8.4 對磁盤上的數據進行持久化 214

8.4.1 使用pickle對數據進行

序列化 214

8.4.2 使用shelve保存數據 216

8.4.3 把數據保存到數據庫 217

8.5 總結 222

第9章 加密與令牌 223

9.1 加密的需要 223

9.1.1 加密的實用指導原則 224

9.2 Hashlib模塊 224

9.3 HMAC模塊 226

9.4 secrets模塊 227

9.4.1 隨機數 227

9.4.2 令牌的生成 228

9.4.3 摘要的比較 229

9.5 JSON Web令牌 230

9.5.1 已註冊的訴求 232

9.5.2 使用非對稱(公鑰)算法 235

9.6 參考閱讀 235

9.7 總結 236

第 10章 測試 237

10.1 對應用程序進行測試 237

10.1.1 測試結構詳解 239

10.1.2 測試的指導原則 240

10.1.3 單元測試 241

10.1.4 測試一個CSV生成器 243

10.2 測試驅動的開發 255

10.3 總結 257

第 11章 調試和性能分析 258

11.1 調試技巧 259

11.1.1 用print進行調試 259

11.1.2 用自定義函數進行調試 259

11.1.3 使用Python調試器 261

11.1.4 檢查日誌 263

11.1.5 其他方法 266

11.2 故障排除指南 267

11.2.1 在哪裡檢查 267

11.2.2 使用測試進行調試 268

11.2.4 監視 268

11.3 對Python進行性能分析 268

11.3.1 什麽時候進行性能分析? 271

11.3.2 測量執行時間 271

11.4 總結 272

第 12章 GUI和腳本 273

12.1 第 一種方法:腳本 275

12.1.1 導入部分 275

12.1.2 解析參數 276

12.1.3 業務邏輯 278

12.2 第二種方法:GUI應用

程序 281

12.2.1 導入部分 282

12.2.2 佈局邏輯 283

12.2.3 業務邏輯 286

12.2.4 如何改進這個應用程序? 291

12.3 下一步的方向 292

12.3.1 turtle模塊 292

12.3.2 wxPython、PyQt和

PyGTK 292

12.3.3 最小驚訝原則 293

12.3.4 線程方面的考慮 293

12.4 總結 293

第 13章 數據科學簡介 295

13.1 IPython和Jupyter Notebook 296

13.1.1 使用Anaconda 297

13.1.2 啟動Notebook 298

13.2 處理數據 298

13.2.1 設置Notebook 299

13.2.2 準備數據 299

12.2.3 清理數據 303

13.2.4 創建DataFrame 304

13.2.5 把DataFrame保存到文件 311

13.2.6 顯示結果 311

13.3 下一步的方向 316

13.4 總結 317

第 14章 API開發 318

14.1 什麽是Web? 318

14.1.1 Web的工作方式 319

14.1.2 響應狀態碼 320

14.2 類型提示:概述 320

14.2.1 類型提示的優點 321

14.2.2 類型提示的精華 322

14.3 API簡介 324

14.3.1 什麽是API 324

14.3.2 API的用途 324

14.3.3 API協議 325

14.3.4 API數據交換格式 325

14.4 鐵路API 326

14.4.1 對數據庫進行建模 327

14.4.2 主要的設置和配置 332

14.4.3 車站端點 333

14.4.4 用戶認證 345

14.4.5 創建API文檔 347

14.5 消費API 348

14.6 未來的方向 353

14.7 總結 354

第 15章 打包Python應用程序 355

15.1 Python包索引 355

15.2 列車調度項目 357

15.3 用setuptools進行打包 361

15.3.1 必要的文件 361

15.3.2 程序包的元數據 364

15.3.3 定義程序包的內容 369

15.3.4 指定依賴關系 371

15.3.5 入口 373

15.4 生成和發布程序包 374

15.4.1 生成 374

15.4.2 發布 375

15.5 啟動新項目的建議 377

15.6 其他工具 377

15.7 進一步的學習方向 378

15.8 總結 378