Python編程入門與實戰

[意]法布里奇奧·羅馬諾(Fabrizio Romano)

  • Python編程入門與實戰-preview-1
  • Python編程入門與實戰-preview-2
Python編程入門與實戰-preview-1

商品描述

這是一本Python入門書,本書的特色之一是在介紹Python編程的基礎知識之後,通過具體編程範例,分不同的主題來闡釋如何用Python語言高效編程,在幫助讀者夯實基礎的同時找到最佳解決方案,達到學以致用的目的。

本書內容由淺入深,從理論到實踐,首先介紹Python編程的基本知識和編程範例,然後介紹如何進行性能優化、有效調試以及如何控製程序的流程。此外,本書還講解了Python中的加密服務和安全令牌等知識。通過學習本書,讀者將對Python語言有一定的瞭解。本書能夠幫助讀者掌握如何編寫程序、構建網站以及利用Python著名的數據科學庫來處理數據等內容。本書涵蓋各種類型的應用程序,可幫助讀者根據所學的知識解決真實世界中的問題。

作者簡介

法布里奇奥·罗马诺(Fabrizio Romano)出生于意大利,帕多瓦大学计算机科学系硕士。他是一位项目经理,同时也是一位教师,并且是CNHC的成员,现在就职于Sohonet,担任首席工程师和项目领导人。

目錄大綱

第 1章 Python概述 1

1.1 編程預備知識 2

1.2 走近Python 4

1.3 Python的優點 5

1.3.1 可移植性 5

1.3.2 一致性 5

1.3.3 提高開發人員的效率 5

1.3.4 廣泛的程序庫 5

1.3.5 軟件質量高 6

1.3.6 軟件集成度高 6

1.3.7 滿足感和樂趣 6

1.4 Python的缺點 6

1.5 當前的Python用戶 7

1.6 設置環境 7

1.7 安裝Python 8

1.7.1 安裝Python解釋器 9

1.7.2 關於virtualenv 10

1.7.3 第 一個虛擬環境 11

1.7.4 控制台 14

1.8 運行Python程序 14

1.8.1 運行Python腳本 14

1.8.2 在交互性shell中運行Python 15

1.8.3 以服務的形式運行Python 16

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

1.9 Python代碼的組織方式 17

1.10 Python的執行模型 21

1.10.1 名稱和名字空間 21

1.10.2 作用域 23

1.10.3 對象和類 26

1.11 編寫良好代碼的指導原則 28

1.12 Python的文化 29

1.13 關於IDE的說明 31

1.14 總結 31

第 2章 內置的數據類型 33

2.1 一切都是對象 34

2.2 可變對象與不可變對象 35

2.3 數值 36

2.3.1 整數 36

2.3.2 布爾值 38

2.3.3 實數 39

2.3.4 復數 40

2.3.5 分數和小數 40

2.4 不可變序列 42

2.4.1 字符串和字節 42

2.4.2 元組 45

2.5 可變序列 46

2.5.1 列表 47

2.5.2 字節數組 50

2.6 集合類型 51

2.7 映射類型—字典 53

2.8 collections模塊 57

2.8.1 namedtuple 57

2.8.2 defaultdict 59

2.8.3 ChainMap 60

2.9 枚舉 61

2.10 註意事項 62

2.10.1 小值緩存 62

2.10.2 如何選擇數據結構 62

2.10.3 關於索引和截取 64

2.10.4 關於名稱 65

2.11 總結 66

第3章 迭代和決策 67

3.1 條件編程 68

3.1.1 一種特化的else-elif 69

3.1.2 三元操作符 71

3.2 循環 72

3.2.1 for循環 72

3.2.2 迭代器和可迭代對象 74

3.2.3 對多個序列進行迭代 75

3.2.4 while循環 77

3.2.5 continue語句和break語句 80

3.2.6 一種特殊的else子句 82

3.3 綜合應用 83

3.3.1 質數生成器 83

3.3.2 應用折扣 85

3.4 itertools模塊 88

3.4.1 無限迭代器 89

3.4.2 終止於最短輸入序列的迭代器 89

3.4.3 組合迭代器 90

3.5 總結 91

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

4.1 函數的優點 93

4.1.1 減少代碼的重復 94

4.1.2 分割復雜任務 94

4.1.3 隱藏實現細節 95

4.1.4 提高可讀性 95

4.1.5 提高可追蹤性 96

4.2 作用域和名稱解析 97

4.3 輸入參數 100

4.3.1 參數傳遞 100

4.3.2 對參數名稱的賦值並不會影響調用者 101

4.3.3 修改可變對象會影響調用者 102

4.3.4 指定輸入參數 103

4.4 返回值 111

4.5 一些實用的提示 113

4.6 遞歸函數 114

4.7 匿名函數 115

4.8 函數的屬性 116

4.9 內置函數 117

4.10 最後一個例子 118

4.11 代碼的文檔 119

4.12 導入對象 120

4.13 總結 122

第5章 節省時間和內存 123

5.1 map、zip和filter函數 125

5.1.1 map函數 125

5.1.2 zip函數 128

5.1.3 filter函數 129

5.2 解析 129

5.2.1 嵌套的解析 131

5.2.2 在解析中應用過濾 131

5.2.3 dict解析 133

5.2.4 set解析 134

5.3 生成器 134

5.3.1 生成器函數 135

5.3.2 next工作方式 138

5.3.3 yield from表達式 141

5.3.4 生成器表達式 142

5.4 性能上的考慮 145

5.5 不要過度使用解析和生成器表達式 147

5.6 名稱局部化 151

5.7 內置的生成行為 152

5.8 最後一個例子 153

5.9 總結 155

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

6.1 裝飾器 156

6.2 面向對象編程(OOP) 164

6.2.1 Python中最簡單的類 164

6.2.2 類和對象的名字空間 165

6.2.3 屬性屏蔽 166

6.2.4 self變量 167

6.2.5 實例的初始化 168

6.2.6 OOP與代碼復用有關 169

6.2.7 訪問基類 174

6.2.8 多重繼承 176

6.2.9 靜態方法和類方法 180

6.2.10 私有屬性和名稱改寫 184

6.2.11 property裝飾器 186

6.2.12 操作符重載 188

6.2.13 多態—簡單說明 188

6.2.14 數據類 189

6.3 編寫自定義的迭代器 190

6.4 總結 191

第7章 文件和數據持久化 192

7.1 操作文件和目錄 193

7.1.1 打開文件 193

7.1.2 讀取和寫入文件 195

7.1.3 檢查文件和目錄是否存在 197

7.1.4 對文件和目錄進行操作 197

7.1.5 臨時文件和臨時目錄 200

7.1.6 檢查目錄的內容 201

7.1.7 文件和目錄的壓縮 202

7.2 數據交換格式 203

7.3 IO、流和請求 210

7.3.1 使用內存中的流 210

7.3.2 執行HTTP請求 211

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

7.4.1 使用pickle模塊對數據進行序列化 214

7.4.2 用shelve保存數據 216

7.4.3 把數據保存到數據庫 217

7.5 總結 223

第8章 測試、性能分析和異常處理 224

8.1 對應用程序進行測試 225

8.1.1 測試的結構 227

8.1.2 編寫測試的指導原則 228

8.1.3 單元測試 229

8.1.4 測試一個CSV生成器 231

8.2 測試驅動的開發 244

8.3 異常 247

8.4 對Python進行性能分析 251

8.5 總結 255

第9章 加密與標記 256

9.1 加密的需要 256

9.2 hashlib模塊 257

9.3 secrets模塊 260

9.3.1 隨機數 260

9.3.2 標記的生成 260

9.3.3 摘要的比較 262

9.4 HMAC 263

9.5 JSON Web標記 263

9.5.1 已註冊的訴求 265

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

9.6 總結 270

第 10章 並發執行 271

10.1 並發與平行的比較 272

10.2 線程和進程 272

10.2.1 線程的簡要剖析 272

10.2.2 全局解釋器鎖 274

10.2.3 競爭條件和死鎖 275

10.2.4 進程的簡要剖析 277

10.2.5 多線程與多進程之間的區別 278

10.3 Python中的並發執行 279

10.3.1 啟動線程 279

10.3.2 啟動進程 281

10.3.3 終止線程和進程 282

10.3.4 生成多個線程 283

10.3.5 解決競爭條件 284

10.3.6 線程的局部數據 286

10.3.7 線程和進程的通信 288

10.3.8 線程池和進程池 291

10.3.9 使用進程為函數添加到期時間 294

10.4 案例 295

10.4.1 案例1:並發的mergesort 296

10.4.2 案例2:批量解答數獨的程序 300

10.4.3 案例3:下載隨機圖像 309

10.5 總結 314

第 11章 調試和故障排除 315

11.1 調試技巧 316

11.1.1 用print進行調試 316

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

11.1.3 檢查回溯 319

11.1.4 使用Python調試器 321

11.1.5 檢查日誌文件 323

11.1.6 其他技巧 326

11.1.7 去哪裡尋找相關的信息 327

11.2 故障排除指南 327

11.2.1 使用控制台編輯器 327

11.2.2 選擇合適的地方放置調試斷點 327

11.2.3 使用測試進行調試 328

11.2.4 監視 328

11.3 總結 328

第 12章 GUI和腳本 330

12.1 第 1種方法:腳本 332

12.1.1 導入部分 332

12.1.2 解析參數 333

12.1.3 業務邏輯 335

12.2 第 2種方法:GUI應用程序 339

12.2.1 導入部分 341

12.2.2 佈局邏輯 341

12.2.3 業務邏輯 345

12.2.4 改進GUI應用程序 351

12.3 進一步瞭解GUI應用程序 352

12.3.1 turtle模塊 352

12.3.2 wxPython、PyQt和PyGTK 353

12.3.3 最小驚訝原則 353

12.3.4 線程方面的考慮 353

12.4 總結 354

第 13章 數據科學 355

13.1 IPython和Jupyter Notebook 356

13.1.1 安裝必要的程序庫 358

13.1.2 使用Anaconda 358

13.1.3 啟動Notebook 359

13.2 處理數據 359

13.2.1 設置Notebook 360

13.2.2 準備數據 360

13.2.3 整理數據 364

13.2.4 創建DataFrame 366

13.2.5 把DataFrame保存到文件 375

13.2.6 顯示結果 375

13.3 數據科學和Python的更多工具 381

13.4 總結 383

第 14章 Web開發 384

14.1 Web 384

14.2 Web的工作方式 385

14.3 Django Web框架 385

14.3.1 Django的設計原則 386

14.3.2 Django的URL分配器 388

14.4 一個regex網站 389

14.4.1 安裝Django 389

14.4.2 添加Entry模型 392

14.4.3 對管理員面板進行自定義 393

14.4.4 創建表單 396

14.4.5 編寫視圖 397

14.4.6 連接URL和視圖 401

14.4.7 編寫模板 403

14.5 Web開發的未來 409

14.5.1 編寫Flask視圖 409

14.5.2 用Falcon創建JSON語錄服務器 411

14.6 總結 413

14.7 再見 414