Python 基礎教程, 3/e (修訂版)

[挪] 芒努斯·利·海特蘭德

  • Python 基礎教程, 3/e (修訂版)-preview-1
  • Python 基礎教程, 3/e (修訂版)-preview-2
Python 基礎教程, 3/e (修訂版)-preview-1

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

商品描述

本書Python新手入門經典圖書,涵蓋了Python編程的方方面面。本書前半部分介紹了基礎知識與概念:從安裝Python、配置開發環境,到列表、元組、字符串、字典以及各種語句的基礎知識,再到抽象、異常、方法、屬性、迭代器等核心概念,Python與數據庫、網絡、C語言等工具結合使用,以及Python程序測試、打包、發布等知識。本書的後半部分,向讀者詳盡介紹了當下流行的多個Python項目的開發過程。 本次修訂,不僅在結構與細節知識上進行了優化和完善,還增加了貼近真實商業環境的案例,並輔以課件PPT和專門針對求職應聘的習題,旨在幫助讀者真正掌握Python開發的實戰能力。

作者簡介

芒努斯·利·海特兰德,在挪威科技大学教授算法课程,是研究与使用Python的实践者,并创作了大量Python图书和教程,在中国有超过30万读者通过本书迈入Python编程的大门。

目錄大綱

曉陽 14:49:15

第 1章 快速上手:基礎知識 1

1.1 交互式解釋器 1

1.2 算法是什麽 2

1.3 數和表達式 3

1.4 變量 4

1.5 語句 5

1.6 獲取用戶輸入 6

1.7 函數 7

1.8 模塊 8

1.8.1 cmath和復數 9

1.8.2 回到未來 9

1.9 保存並執行程序 10

1.9.1 從命令提示符運行Python

腳本 11

1.9.2 讓腳本像普通程序一樣 11

1.9.3 註釋 12

1.10 字符串 13

1.10.1 單引號字符串以及對引號

轉義 13

1.10.2 拼接字符串 14

1.10.3 字符串表示str和repr 14

1.10.4 長字符串、原始字符串和

字節 15

1.11 小結 20

1.11.1 本章介紹的新函數 20

1.11.2 預告 21

第 2章 列表和元組 22

2.1 序列概述 22

2.2 通用的序列操作 23

2.2.1 索引 23

2.2.2 切片 25

2.2.3 序列相加 27

2.2.4 乘法 27

2.2.5 成員資格 28

2.3 列表:Python的主力 30

2.3.1 函數list 30

2.3.2 基本的列表操作 30

2.3.3 列表方法 31

2.4 元組:不可修改的序列 37

2.5 小結 38

2.5.1 本章介紹的新函數 39

2.5.2 預告 39

第3章 使用字符串 40

3.1 字符串基本操作 40

3.2 設置字符串的格式:精簡版 40

3.3 設置字符串的格式:完整版 42

3.3.1 替換字段名 42

3.3.2 基本轉換 43

3.3.3 寬度、精度和千位分隔符 44

3.3.4 符號、對齊和用0填充 45

3.4 字符串方法 47

3.4.1 center 47

3.4.2 find 47

3.4.3 join 48

3.4.4 lower 49

3.4.5 replace 49

3.4.6 split 50

3.4.7 strip 50

3.4.8 translate 51

3.4.9 判斷字符串是否滿足特定的

條件 51

3.5 小結 51

3.5.1 本章介紹的新函數 52

3.5.2 預告 52

第4章 字典 53

4.1 字典的用途 53

4.2 創建和使用字典 54

4.2.1 函數dict 54

4.2.2 基本的字典操作 54

4.2.3 將字符串格式設置功能用於

字典 56

4.2.4 字典方法 57

4.3 小結 62

4.3.1 本章介紹的新函數 62

4.3.2 預告 62

第5章 條件、循環及其他語句 63

5.1 再談print和import 63

5.1.1 打印多個參數 63

5.1.2 導入時重命名 64

5.2 賦值魔法 65

5.2.1 序列解包 65

5.2.2 鏈式賦值 66

5.2.3 增強賦值 66

5.3 代碼塊:縮進的樂趣 67

5.4 條件和條件語句 67

5.4.1 這正是布爾值的用武之地 68

5.4.2 有條件地執行和if語句 69

5.4.3 else子句 69

5.4.4 elif子句 70

5.4.5 代碼塊嵌套 70

5.4.6 更復雜的條件 70

5.4.7 斷言 74

5.5 循環 75

5.5.1 while循環 75

5.5.2 for循環 76

5.5.3 迭代字典 77

5.5.4 一些迭代工具 77

5.5.5 跳出循環 79

5.5.6 循環中的else子句 81

5.6 簡單推導 81

5.7 三人行 83

5.7.1 什麽都不做 83

5.7.2 使用del刪除 83

5.7.3 使用exec和eval執行字符串及計算其結果 84

5.8 小結 86

5.8.1 本章介紹的新函數 87

5.8.2 預告 88

第6章 函數 89

6.1 懶惰是一種美德 89

6.2 抽象和結構 90

6.3 自定義函數 90

6.3.1 給函數編寫文檔 91

6.3.2 其實並不是函數的函數 92

6.4 參數魔法 92

6.4.1 值從哪裡來 93

6.4.2 我能修改參數嗎 93

6.4.3 關鍵字參數和默認值 97

6.4.4 收集參數 99

6.4.5 分配參數 101

6.4.6 練習使用參數 102

6.5 作用域 104

6.6 遞歸 106

6.6.1 兩個經典案例:階乘和冪 107

6.6.2 另一個經典案例:二分查找 108

6.7 小結 111

6.7.1 本章介紹的新函數 111

6.7.2 預告 112

第7章 面向對象 113

7.1 對象魔法 113

7.1.1 多態 113

7.1.2 多態和方法 115

7.1.3 封裝 116

7.1.4 繼承 118

7.2 類 118

7.2.1 類到底是什麽 118

7.2.2 創建自定義類 119

7.2.3 屬性、函數和方法 120

7.2.4 再談隱藏 120

7.2.5 類的命名空間 122

7.2.6 指定超類 123

7.2.7 深入探討繼承 124

7.2.8 多個超類 124

7.2.9 接口和內省 125

7.2.10 抽象基類 126

7.3 關於面向對象設計的一些思考 128

7.4 小結 128

7.4.1 本章介紹的新函數 129

7.4.2 預告 129

第8章 異常 130

8.1 異常是什麽 130

8.2 讓事情沿你指定的軌道出錯 130

8.2.1 raise語句 130

8.2.2 自定義的異常類 131

8.3 捕獲異常 132

8.3.1 不用提供參數 132

8.3.2 多個except子句 134

8.3.3 一箭雙雕 134

8.3.4 捕獲對象 135

8.3.5 一網打盡 135

8.3.6 萬事大吉時 136

8.3.7 最後 137

8.4 異常和函數 138

8.5 異常之禪 138

8.6 不那麽異常的情況 140

8.7 小結 141

8.7.1 本章介紹的新函數 141

8.7.2 預告 141

第9章 魔法方法、特性和迭代器 142

9.1 構造函數 142

9.1.1 重寫普通方法和特殊的構造

函數 143

9.1.2 調用未關聯的超類構造函數 145

9.1.3 使用函數super 145

9.2 元素訪問 146

9.2.1 基本的序列和映射協議 147

9.2.2 從list、dict和str派生 149

9.3 其他魔法方法 150

9.4 特性 150

9.4.1 函數property 151

9.4.2 靜態方法和類方法 152

9.4.3 __getattr__、__setattr__等方法 153

9.5 迭代器 154

9.5.1 迭代器協議 154

9.5.2 從迭代器創建序列 156

9.6 生成器 156

9.6.1 創建生成器 156

9.6.2 遞歸式生成器 157

9.6.3 通用生成器 159

9.6.4 生成器的方法 159

9.6.5 模擬生成器 160

9.7 八皇後問題 161

9.7.1 生成器的回溯 161

9.7.2 問題 161

9.7.3 狀態表示 162

9.7.4 檢測沖突 162

9.7.5 基線條件 163

9.7.6 遞歸條件 163

9.7.7 掃尾工作 165

9.8 小結 165

9.8.1 本章介紹的新函數 166

9.8.2 預告 166

第 10章 模塊 167

10.1 模塊概述 167

10.1.1 模塊就是程序 167

10.1.2 模塊是用來下定義的 169

10.1.3 讓模塊可用 171

10.1.4 包 172

10.2 探索模塊 173

10.2.1 模塊包含什麽 173

10.2.2 使用help獲取幫助 174

10.2.3 文檔 175

10.2.4 使用源代碼 176

10.3 標準庫:一些深受歡迎的模塊 176

10.3.1 sys 176

10.3.2 os 178

10.3.3 fileinput 180

10.3.4 集合、堆和雙端隊列 181

10.3.5 time 186

10.3.6 random 187

10.3.7 shelve和json 190

10.3.8 re 193

10.3.9 其他有趣的標準模塊 205

10.4 小結 207

10.4.1 本章介紹的新函數 207

10.4.2 預告 207

第 11章 文件 208

11.1 打開文件 208

11.2 文件的基本方法 209

11.2.1 讀取和寫入 210

11.2.2 使用管道重定向輸出 210

11.2.3 讀取和寫入行 212

11.2.4 關閉文件 212

11.2.5 使用文件的基本方法 213

11.3 迭代文件內容 215

11.3.1 每次一個字符(或字節) 215

11.3.2 每次一行 216

11.3.3 讀取所有內容 216

11.3.4 使用fileinput實現延遲行迭代 216

11.3.5 文件迭代器 217

11.4 小結 218

11.4.1 本章介紹的新函數 218

11.4.2 預告 218

第 12章 圖形用戶界面 219

12.1 創建GUI示例應用程序 219

12.1.1 初探 220

12.1.2 佈局 221

12.1.3 事件處理 222

12.1.4 最終的程序 223

12.2 使用其他GUI工具包 224

12.3 小結 225

第 13章 數據庫 226

13.1 Python數據庫API 226

13.1.1 全局變量 227

13.1.2 異常 227

13.1.3 連接和游標 228

13.1.4 類型 230

13.2 SQLite和PySQLite 230

13.2.1 起步 231

13.2.2 數據庫應用程序示例 231

13.3 小結 234

13.3.1 本章介紹的新函數 234

13.3.2 預告 234

 

曉陽 14:49:17

第 14章 網絡編程 235

14.1 幾個網絡模塊 235

14.1.1 模塊socket 235

14.1.2 模塊urllib和urllib2 237

14.1.3 其他模塊 239

14.2 SocketServer及相關的類 240

14.3 多個連接 240

14.3.1 使用SocketServer實現

分叉和線程化 242

14.3.2 使用select和poll實現

異步I/O 242

14.4 Twisted 245

14.4.1 下載並安裝Twisted 245

14.4.2 編寫Twisted服務器 245

14.5 小結 247

14.5.1 本章介紹的新函數 248

14.5.2 預告 248

第 15章 Python和Web 249

15.1 屏幕抓取 249

15.1.1 Tidy和XHTML解析 250

15.1.2 Beautiful Soup 254

15.2 使用CGI創建動態網頁 255

15.2.1 第 一步:準備Web服務器 255

15.2.2 第二步:添加!#行 256

15.2.3 第三步:設置文件權限 256

15.2.4 CGI安全風險 257

15.2.5 簡單的CGI腳本 257

15.2.6 使用cgitb進行調試 258

15.2.7 使用模塊cgi 259

15.2.8 簡單的表單 260

15.3 使用Web框架 261

15.4 Web服務:更高級的抓取 262

15.4.1 RSS和相關內容 263

15.4.2 使用XML-RPC進行遠程

過程調用 263

15.4.3 SOAP 264

15.5 小結 264

15.5.1 本章介紹的新函數 265

15.5.2 預告 265

第 16章 測試基礎 266

16.1 先測試再編碼 266

16.1.1 準確的需求說明 266

16.1.2 做好應對變化的準備 268

16.1.3 測試四步曲 268

16.2 測試工具 269

16.2.1 doctest 269

16.2.2 unittest 271

16.3 超越單元測試 273

16.3.1 使用PyChecker和PyLint

檢查源代碼 273

16.3.2 性能分析 276

16.4 小結 277

16.4.1 本章介紹的新函數 278

16.4.2 預告 278

第 17章 擴展Python 279

17.1 魚和熊掌兼得 279

17.2 簡單易行的方式:Jython和

IronPython 280

17.3 編寫C語言擴展 282

17.3.1 SWIG 284

17.3.2 手工編寫擴展 287

17.4 小結 291

17.4.1 本章介紹的新函數 291

17.4.2 預告 291

第 18章 程序打包 292

18.1 Setuptools基礎 292

18.2 打包 294

18.3 編譯擴展 295

18.4 使用py2exe創建可執行程序 296

18.5 小結 296

18.5.1 本章介紹的新函數 297

18.5.2 預告 297

第 19章 趣味編程 298

19.1 為何要有趣 298

19.2 編程柔術 298

19.3 原型設計 299

19.4 配置 300

19.4.1 提取常量 300

19.4.2 配置文件 301

19.5 日誌 303

19.6 如果你已不勝其煩 304

19.7 如果你想深入學習 304

19.8 小結 305

第 20章 項目1:自動添加標簽 306

20.1 問題描述 306

20.2 有用的工具 307

20.3 準備工作 307

20.4 初次實現 308

20.4.1 找出文本塊 308

20.4.2 添加一些標記 309

20.5 再次實現 310

20.5.1 處理程序 311

20.5.2 處理程序的超類 311

20.5.3 規則 313

20.5.4 規則的超類 314

20.5.5 過濾器 314

20.5.6 解析器 314

20.5.7 創建規則和過濾器 315

20.5.8 整合起來 318

20.6 進一步探索 322

第 21章 項目2:繪制圖表 323

21.1 問題描述 323

21.2 有用的工具 323

21.3 準備工作 324

21.4 初次實現 324

21.4.1 使用ReportLab繪圖 325

21.4.2 繪制折線 326

21.4.3 編寫原型 326

21.5 再次實現 328

21.5.1 獲取數據 328

21.5.2 使用LinePlot類 328

21.6 進一步探索 330

第 22章 項目3:萬能的XML 331

22.1 問題描述 331

22.2 有用的工具 332

22.3 準備工作 332

22.4 初次實現 333

22.4.1 創建簡單的內容處理程序 334

22.4.2 創建HTML頁面 336

22.5 再次實現 338

22.5.1 分派器混合類 338

22.5.2 將首部和尾部寫入文件的

方法以及默認處理程序 339

22.5.3 支持目錄 340

22.5.4 事件處理程序 340

22.6 進一步探索 343

第 23章 項目4:新聞匯總 344

23.1 問題描述 344

23.2 有用的工具 345

23.3 準備工作 345

23.4 初次實現 345

23.5 再次實現 347

23.6 進一步探索 353

第 24章 項目5:虛擬茶話會 355

24.1 問題描述 355

24.2 有用的工具 355

24.3 準備工作 356

24.4 初次實現 357

24.4.1 ChatServer類 357

24.4.2 ChatSession類 358

24.4.3 整合起來 360

24.5 再次實現 362

24.5.1 基本的命令解釋功能 362

24.5.2 聊天室 363

24.5.3 登錄和退出聊天室 363

24.5.4 主聊天室 364

24.5.5 新的服務器 364

24.6 進一步探索 369

第 25章 項目6:使用CGI進行遠程

編輯 370

25.1 問題描述 370

25.2 有用的工具 370

25.3 準備工作 371

25.4 初次實現 371

25.5 再次實現 372

25.5.1 創建文件名錶單 372

25.5.2 編寫編輯器腳本 373

25.5.3 編寫保存腳本 374

25.5.4 運行編輯器 375

25.6 進一步探索 377

第 26章 項目7:自建公告板 378

26.1 問題描述 378

26.2 有用的工具 378

26.3 準備工作 379

26.4 初次實現 380

26.5 再次實現 384

26.5.1 編寫腳本main.cgi 385

26.5.2 編寫腳本view.cgi 386

26.5.3 編寫腳本edit.cgi 387

26.5.4 編寫腳本save.cgi 389

26.5.5 嘗試使用 390

26.6 進一步探索 391

第 27章 項目8:使用XML-RPC共享

文件 392

27.1 問題描述 392

27.2 有用的工具 393

27.3 準備工作 394

27.4 初次實現 394

27.4.1 實現簡單的節點 394

27.4.2 嘗試使用 399

27.5 再次實現 400

27.5.1 創建客戶端界面 401

27.5.2 引發異常 401

27.5.3 驗證文件名 402

27.5.4 嘗試使用 406

27.6 進一步探索 406

第 28章 項目9:使用GUI共享文件 408

28.1 問題描述 408

28.2 有用的工具 408

28.3 準備工作 408

28.4 初次實現 408

28.5 再次實現 410

28.6 進一步探索 413

第 29章 項目10:自製街機游戲 414

29.1 問題描述 414

29.2 有用的工具 415

29.2.1 pygame 415

29.2.2 pygame.locals 415

29.2.3 pygame.display 415

29.2.4 pygame.font 416

29.2.5 pygame.sprite 416

29.2.6 pygame.mouse 416

29.2.7 pygame.event 416

29.2.8 pygame.image 417

29.3 準備工作 417

29.4 初次實現 417

29.5 再次實現 420

29.6 進一步探索 429

附錄A 簡明教程 430

附錄B Python參考手冊 437