Python基礎教程(第2版·修訂版)

Python基礎教程(第2版·修訂版)

《Python基礎教程(第2版 修訂版)》包括Python程式設計的方方面面,首先從Python的安裝開始,隨後介紹了Python的基礎知識和基本概念,包括列表、元組、字元串、字典以及各種語句。

內容簡介

《Python基礎教程(第2版·修訂版)》是2017年人民郵電出版社出版的一本圖書,圖書的作者是Magnus Lie Hetland。然後循序漸進地介紹了一些相對高級的主題,包括抽象、異常、魔法方法、屬性、疊代器。此後探討了如何將Python與資料庫、網路、C語言等工具結合使用,從而發揮出Python的強大功能,同時介紹了Python程式測試、打包、發布等知識。結尾,作者結合前面講述的內容,按照實際項目開發的步驟向讀者介紹了幾個具有實際意義的Python項目的開發過程。

《Python基礎教程(第2版 修訂版)》內容涉及的範圍較廣,既能為初學者夯實基礎,又能幫助程式設計師提升技能,適合各個層次的Python開發人員閱讀參考。

圖書目錄

第1章 快速改造:基礎知識 1

1.1 安裝Python 1

1.1.1 Windows 1

1.1.2 Linux和UNIX 3

1.1.3 蘋果機(Macintosh) 4

1.1.4 其他發行版本 5

1.1.5 時常關注,保持更新 6

1.2 互動式解釋器 6

1.3 算法是什麼 7

1.4 數字和表達式 8

1.4.1 長整數 9

1.4.2 十六進制和八進制 10

1.5 變數 10

1.6 語句 11

1.7 獲取用戶輸入 12

1.8 函式 13

1.9 模組 14

1.9.1 cmath和複數 14

1.9.2 回到__future__ 15

1.10 保存並執行程式 15

1.10.1 通過命令提示符運行Python腳本 16

1.10.2 讓腳本像普通程式一樣運行 17

1.10.3 注釋 18

1.11 字元串 19

1.11.1 單引號字元串和轉義引號 19

1.11.2 拼接字元串 20

1.11.3 字元串表示,str和repr 20

1.11.4 input和raw_input的比較 21

1.11.5 長字元串、原始字元串和Unicode 22

1.12 小結 24

1.12.1 本章的新函式 25

1.12.2 接下來學什麼 25

第2章 列表和元組 26

2.1 序列概覽 26

2.2 通用序列操作 27

2.2.1 索引 27

2.2.2 分片 29

2.2.3 序列相加 31

2.2.4 乘法 31

2.2.5 成員資格 32

2.2.6 長度、最小值和最大值 33

2.3 列表:Python的“苦力” 34

2.3.1 list函式 34

2.3.2 基本的列表操作 34

2.3.3 列表方法 36

2.4 元組:不可變序列 41

2.4.1 tuple函式 42

2.4.2 基本元組操作 42

2.4.3 那么,意義何在 42

2.5 小結 43

2.5.1 本章的新函式 43

2.5.2 接下來學什麼 43

第3章 使用字元串 44

3.1 基本字元串操作 44

3.2 字元串格式化:精簡版 44

3.3 字元串格式化:完整版 46

3.3.1 簡單轉換 47

3.3.2 欄位寬度和精度 47

3.3.3 符號、對齊和用0填充 47

3.4 字元串方法 49

3.4.1 find 49

3.4.2 join 50

3.4.3 lower 51

3.4.4 replace 51

3.4.5 split 52

3.4.6 strip 52

3.4.7 translate 52

3.5 小結 54

3.5.1 本章的新函式 54

3.5.2 接下來學什麼 54

第4章 字典:當索引不好用時 55

4.1 字典的使用 55

4.2 創建和使用字典 56

4.2.1 dict函式 56

4.2.2 基本字典操作 57

4.2.3 字典的格式化字元串 58

4.2.4 字典方法 59

4.3 小結 64

4.3.1 本章的新函式 64

4.3.2 接下來學什麼 64

第5章 條件、循環和其他語句 65

5.1 print和import的更多信息 65

5.1.1 使用逗號輸出 65

5.1.2 把某件事作為另一件事導入 66

5.2 賦值魔法 67

5.2.1 序列解包 67

5.2.2 鏈式賦值 68

5.2.3 增量賦值 68

5.3 語句塊:縮排的樂趣 69

5.4 條件和條件語句 69

5.4.1 這就是布爾變數的作用 69

5.4.2 條件執行和 if 語句 70

5.4.3 else子句 71

5.4.4 elif子句 71

5.4.5 嵌套代碼塊 71

5.4.6 更複雜的條件 72

5.4.7 斷言 76

5.5 循環 76

5.5.1 while循環 77

5.5.2 for循環 77

5.5.3 循環遍歷字典元素 78

5.5.4 一些疊代工具 79

5.5.5 跳出循環 80

5.5.6 循環中的else子句 82

5.6 列表推導式——輕量級循環 82

5.7 三人行 83

5.7.1 什麼都沒發生 84

5.7.2 使用del刪除 84

5.7.3 使用exec和eval執行和求值字元串 85

5.8 小結 87

5.8.1 本章的新函式 88

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 作用域 103

6.6 遞歸 105

6.6.1 兩個經典:階乘和冪 106

6.6.2 另外一個經典:二分法查找 107

6.7 小結 110

6.7.1 本章的新函式 110

6.7.2 接下來學什麼 111

第7章 更加抽象 112

7.1 對象的魔力 112

7.1.1 多態 113

7.1.2 封裝 115

7.1.3 繼承 117

7.2 類和類型 117

7.2.1 類到底是什麼 117

7.2.2 創建自己的類 118

7.2.3 特性、函式和方法 119

7.2.4 類的命名空間 121

7.2.5 指定超類 122

7.2.6 檢查繼承 122

7.2.7 多個超類 123

7.2.8 接口和內省 124

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

7.4 小結 125

7.4.1 本章的新函式 126

7.4.2 接下來學什麼 126

第8章 異常 127

8.1 什麼是異常 127

8.2 按自己的方式出錯 127

8.2.1 raise語句 127

8.2.2 自定義異常類 128

8.3 捕捉異常 129

8.4 不止一個except子句 130

8.5 用一個塊捕捉兩個異常 131

8.6 捕捉對象 131

8.7 真正的全捕捉 132

8.8 萬事大吉 132

8.9 最後…… 134

8.10 異常和函式 134

8.11 異常之禪 135

8.12 小結 136

8.12.1 本章的新函式 137

8.12.2 接下來學什麼 137

第9章 魔法方法、屬性和疊代器 138

9.1 準備工作 138

9.2 構造方法 139

9.2.1 重寫一般方法和特殊的構造方法 140

9.2.2 調用未綁定的超類構造方法 141

9.2.3 使用super函式 142

9.3 成員訪問 143

9.3.1 基本的序列和映射規則 144

9.3.2 子類化列表,字典和字元串 146

9.4 更多魔力 147

9.5 屬性 147

9.5.1 property函式 148

9.5.2 靜態方法和類成員方法 149

9.5.3 __getattr__、__setattr__和它的朋友們 150

9.6 疊代器 151

9.6.1 疊代器規則 151

9.6.2 從疊代器得到序列 153

9.7 生成器 153

9.7.1 創建生成器 153

9.7.2 遞歸生成器 154

9.7.3 通用生成器 156

9.7.4 生成器方法 156

9.7.5 模擬生成器 157

9.8 八皇后問題 158

9.8.1 生成器和回溯 158

9.8.2 問題 159

9.8.3 狀態表示 159

9.8.4 尋找衝突 159

9.8.5 基本情況 160

9.8.6 需要遞歸的情況 161

9.8.7 打包 162

9.9 小結 163

9.9.1 本章的新函式 164

9.9.2 接下來學什麼 164

第10章 自帶電池 165

10.1 模組 165

10.1.1 模組是程式 165

10.1.2 模組用於定義 167

10.1.3 讓你的模組可用 169

10.1.4 包 171

10.2 探究模組 172

10.2.1 模組中有什麼 172

10.2.2 用help獲取幫助 173

10.2.3 文檔 174

10.2.4 使用原始碼 174

10.3 標準庫:一些最愛 175

10.3.1 sys 175

10.3.2 os 176

10.3.3 fileinput 178

10.3.4 集合、堆和雙端佇列 180

10.3.5 time 184

10.3.6 random 185

10.3.7 shelve 188

10.3.8 re 191

10.3.9 其他有趣的標準模組 204

10.4 小結 205

10.4.1 本章的新函式 205

10.4.2 接下來學什麼 206

第11章 檔案和流 207

11.1 打開檔案 207

11.1.1 檔案模式 207

11.1.2 緩衝 208

11.2 基本的檔案方法 209

11.2.1 讀和寫 209

11.2.2 管式輸出 210

11.2.3 讀寫行 211

11.2.4 關閉檔案 212

11.2.5 使用基本檔案方法 213

11.3 對檔案內容進行疊代 214

11.3.1 按位元組處理 214

11.3.2 按行操作 215

11.3.3 讀取所有內容 215

11.3.4 使用fileinput實現懶惰行疊代 216

11.3.5 檔案疊代器 216

11.4 小結 217

11.4.1 本章的新函式 218

11.4.2 接下來學什麼 218

第12章 圖形用戶界面 219

12.1 豐富的平台 219

12.2 下載和安裝wxPython 220

12.3 創建示例GUI應用程式 221

12.3.1 開始 221

12.3.2 視窗和組件 222

12.3.3 標籤、標題和位置 223

12.3.4 更智慧型的布局 225

12.3.5 事件處理 226

12.3.6 完成了的程式 226

12.4 但是我寧願用…… 228

12.4.1 使用Tkinter 229

12.4.2 使用Jython和Swing 229

12.4.3 使用其他開發包 230

12.5 小結 230

第13章 資料庫支持 231

13.1 Python資料庫編程接口(API) 232

13.1.1 全局變數 232

13.1.2 異常 233

13.1.3 連線和游標 233

13.1.4 類型 235

13.2 SQLite和PySQLite 235

13.2.1 入門 236

13.2.2 資料庫應用程式示例 237

13.3 小結 239

13.3.1 本章的新函式 240

13.3.2 接下來學什麼 240

第14章 網路編程 241

14.1 少數幾個網路設計模組 241

14.1.1 socket模組 242

14.1.2 urllib和urllib2模組 243

14.1.3 其他模組 245

14.2 SocketServer和它的朋友們 246

14.3 多個連線 247

14.3.1 使用SocketServer進行分叉和執行緒處理 248

14.3.2 帶有select和poll的異步I/O 249

14.4 Twisted 251

14.4.1 下載並安裝Twisted 251

14.4.2 編寫Twisted伺服器 251

14.5 小結 253

14.5.1 本章的新函式 254

14.5.2 接下來學什麼 254

第15章 Python和Web 255

15.1 螢幕抓取 255

15.1.1 Tidy和XHTML解析 256

15.1.2 Beautiful Soup 260

15.2 使用CGI創建動態網頁 261

15.2.1 第一步:準備網路伺服器 261

15.2.2 第二步:加入Pound Bang行 261

15.2.3 第三步:設定檔案許可權 262

15.2.4 CGI安全風險 263

15.2.5 簡單的CGI腳本 263

15.2.6 使用cgitb調試 263

15.2.7 使用cgi模組 264

15.2.8 簡單的表單 266

15.3 更進一步:mod_python 267

15.3.1 安裝mod_python 268

15.3.2 CGI處理程式 269

15.3.3 PSP 270

15.3.4 發布 271

15.4 網路應用程式框架 273

15.5 Web服務:正確分析 274

15.5.1 RSS和相關內容 274

15.5.2 使用XML-RPC進行遠程過程調用 275

15.5.3 SOAP 276

15.6 小結 276

15.6.1 本章的新函式 276

15.6.2 接下來學什麼 276

第16章 測試 277

16.1 先測試,後編碼 277

16.1.1 精確的需求說明 278

16.1.2 為改變而計畫 279

16.1.3 測試的4個步驟 279

16.2 測試工具 280

16.2.1 doctest 280

16.2.2 unittest 282

16.3 單元測試以外的內容 285

16.3.1 使用PyChecker和PyLint檢查原始碼 285

16.3.2 性能分析 288

16.4 小結 289

16.4.1 本章的新函式 290

16.4.2 接下來學什麼 290

第17章 擴展Python 291

17.1 考慮哪個更重要 291

17.2 非常簡單的途徑:Jython和IronPython 292

17.3 編寫C語言擴展 294

17.3.1 SWIG 296

17.3.2 自己研究 299

17.4 小結 303

17.4.1 本章的新函式 304

17.4.2 接下來學什麼 304

第18章 程式打包 305

18.1 Distutils基礎 305

18.2 打包 307

18.2.1 建立存檔檔案 307

18.2.2 創建Windows安裝程式或RPM包 308

18.3 編譯擴展 309

18.4 使用py2exe創建可執行程式 310

18.5 小結 311

18.5.1 本章的新函式 311

18.5.2 接下來學什麼 311

第19章 好玩的編程 312

19.1 為什麼要好玩 312

19.2 程式設計的柔術 312

19.3 原型設計 313

19.4 配置 314

19.4.1 提取常量 314

19.4.2 配置檔案 315

19.5 日誌記錄 317

19.6 如果還沒煩 318

19.7 如果還想學 318

19.8 小結 319

第20章 項目1:即時標記 320

20.1 問題是什麼 320

20.2 有用的工具 321

20.3 準備工作 321

20.4 初次實現 322

20.4.1 找出文本塊 322

20.4.2 添加一些標記 323

20.5 再次實現 324

20.5.1 處理程式 325

20.5.2 處理程式的超類 325

20.5.3 規則 327

20.5.4 規則的超類 328

20.5.5 過濾器 328

20.5.6 分析器 328

20.5.7 構造規則和過濾器 329

20.5.8 整合 332

20.6 進一步探索 336

第21章 項目2:畫幅好畫 337

21.1 問題 337

21.2 有用的工具 338

21.3 準備工作 338

21.4 初次實現 339

21.4.1 用ReportLab畫圖 339

21.4.2 生成折線 340

21.4.3 編寫原型 341

21.5 再次實現 342

21.5.1 獲取數據 342

21.5.2 使用LinePlot類 343

21.6 進一步探索 344

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

22.1 問題 345

22.2 有用的工具 346

22.3 準備工作 347

22.4 初次實現 348

22.4.1 創建簡單的內容處理器 348

22.4.2 生成HTML頁面 350

22.5 再次實現 352

22.5.1 調度程式的混入類 352

22.5.2 實現首部、頁腳和默認的處理程式 354

22.5.3 對目錄的支持 354

22.5.4 事件處理程式 355

22.6 進一步探索 358

第23章 項目4:新聞聚合 359

23.1 問題 359

23.2 有用的工具 360

23.3 準備工作 360

23.4 初次實現 360

23.5 再次實現 363

23.6 進一步探索 369

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

24.1 問題 371

24.2 有用的工具 371

24.3 準備工作 372

24.4 初次實現 373

24.4.1 ChatServer類 373

24.4.2 ChatSession類 374

24.4.3 整合 376

24.5 再次實現 377

24.5.1 基礎命令解釋 378

24.5.2 房間 378

24.5.3 登錄和退出房間 379

24.5.4 主聊天室 379

24.5.5 新的伺服器 380

24.6 進一步探索 384

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

25.1 問題 385

25.2 有用的工具 385

25.3 準備工作 386

25.4 初次實現 386

25.5 再次實現 387

25.5.1 創建檔案名稱表單 387

25.5.2 創建編輯器的腳本 388

25.5.3 編寫保存腳本 389

25.5.4 運行編輯器 390

25.6 進一步探索 391

第26章 項目7:自定義電子公告板 393

26.1 問題 393

26.2 有用的工具 394

26.3 準備工作 394

26.4 初次實現 395

26.5 再次實現 398

26.5.1 編寫Main腳本 399

26.5.2 編寫View腳本 400

26.5.3 編寫Edit腳本 401

26.5.4 編寫Save腳本 403

26.5.5 嘗試使用 404

26.6 進一步探索 404

第27章 項目8:使用XML-RPC進行檔案共享 406

27.1 問題 406

27.2 有用的工具 407

27.3 準備工作 407

27.4 初次實現 408

27.4.1 實現一個簡單的節點 408

27.4.2 嘗試使用首次實現 413

27.5 再次實現 414

27.5.1 創建客戶端界面 414

27.5.2 引發異常 415

27.5.3 驗證檔案名稱 416

27.5.4 嘗試使用再次實現 419

27.6 進一步探索 420

第28章 項目9:檔案共享2——GUI版本 421

28.1 問題 421

28.2 有用的工具 421

28.3 準備工作 421

28.4 初次實現 422

28.5 再次實現 424

28.6 進一步探索 427

第29章 項目10:DIY街機遊戲 428

29.1 問題 428

29.2 有用的工具 429

29.2.1 pygame 429

29.2.2 pygame.locals 429

29.2.3 pygame.display 430

29.2.4 pygame.font 430

29.2.5 pygame.sprite 430

29.2.6 pygame.mouse 431

29.2.7 pygame.event 431

29.2.8 pygame.image 431

29.3 準備工作 431

29.4 初次實現 432

29.5 再次實現 434

29.6 進一步探索 442

附錄A 簡明版本 443

附錄B Python參考手冊 450

附錄C 線上資源 461

附錄D Python 3.0 464

作者簡介

Magnus Lie Hetland,挪威科技大學副教授,教授算法。黑客,喜歡鑽研新銳程式語言,是Python語言的堅定支持者。他寫過很多Python方面的書和線上教程,比如深受讀者歡迎的網上教程Instant Python。此外他還是一名業餘話劇演員,從1985年首次登台至今,已經參演數十部話劇。

相關詞條

熱門詞條

聯絡我們