《Python從菜鳥到高手》是2018年9月清華大學出版社出版的圖書,作者是李寧。
基本介紹
- 書名:Python從菜鳥到高手
- 作者:李寧
- ISBN:9787302507161
- 定價:128元
- 出版社:清華大學出版社
- 出版時間:2018年9月
內容簡介,圖書目錄,
內容簡介
本書從實戰角度系統講解了Python核心知識點以及Python在Web開發、數據分析、網路爬蟲、桌面套用等領域的各種開發實踐。本書用超過5萬行的代碼及大量的實戰案例完美演繹了Python在各個領域的出色表現,每一個案例都有詳細的實現步驟,帶領讀者由淺入深系統掌握Python語言的核心及Python全棧開發技能。本書共分六篇,各篇內容如下:
Python基礎知識篇(第1章~第10章),內容主要包括Python的基本概念、開發環境安裝和配置、Python語言的基礎知識,控制語句、列表、元組、字元串、字典、函式、類、對象、異常、方法、屬性和疊代器;Python高級編程篇(第11章~第20章),內容主要包括正則表達式、常用模組、檔案和流、數據存儲、TCP和UDP編程、Urllib3、twisted、FTP、Email、多執行緒、tkinter、PyQt5和測試;Python Web開發篇(第21章、第22章),主要講解了Python語言中最流行的兩個Web開發框架(Flask和Django)的使用方法;Python科學計算與數據分析篇(第23章~第25章),主要講解了Python語言中最常用的3個數據分析和數據可視化庫(NumPy、Matplotlib和Pandas)的使用方法;Python Web爬蟲技術篇(第26章、第27章),主要講解了編寫網路爬蟲的關鍵技術和常用程式庫,這些程式庫主要包括Beautiful Soup和Scrapy;Python項目實戰篇(第28章~第33章),內容主要包括Web項目開發實戰、爬蟲項目開發實戰、API項目開發實戰、桌面套用項目開發實戰和遊戲項目開發實戰。
本書適合作為Python程式設計者的參考用書。
圖書目錄
推薦序 1
前言 3
本書配套資源 5
第一篇 Python基礎知識
第1章 初識Python 3
1.1 Python簡介 3
1.1.1 什麼是Python 3
1.1.2 Python的套用領域 4
1.1.3 如何學好Python 5
1.1.4 Python API文檔 6
1.2 搭建Python開發環境 8
1.2.1 安裝官方的Python運行環境 9
1.2.2 配置PATH環境變數 11
1.2.3 安裝Anaconda Python開發環境 13
1.2.4 下載和安裝JDK 13
1.2.5 下載和安裝Eclipse 16
1.2.6 Python IDE(PyDev)安裝 17
1.2.7 配置Python IDE(PyDev)開發環境 20
1.2.8 測試Python IDE(PyDev)開發環境 21
1.2.9 安裝PyCharm 22
1.2.10 配置PyCharm 23
1.2.11 Python中的REPL環境 25
1.3 第一個Python程式 26
1.4 調試Python程式 26
1.5 小結 29
1.6 實戰與練習 29
第2章 Python語言基礎 30
2.1 Python程式中的基本要素 30
2.1.1 導入Python模組 30
2.1.2 聲明變數 32
2.1.3 清空Python控制台 32
2.2 數字 34
2.2.1 基礎知識 34
2.2.2 大整數 36
2.2.3 二進制、八進制和十六進制 36
2.2.4 數字的格式化輸出 37
2.3 獲取用戶輸入 39
2.4 函式 40
2.5 注釋 41
2.6 字元串基礎 42
2.6.1 單引號字元串和轉義符 42
2.6.2 拼接字元串 43
2.6.3 保持字元串的原汁原味 44
2.6.4 長字元串 46
2.7 小結 47
2.8 實戰與練習 47
第3章 條件、循環和其他語句 49
3.1 神奇的print函式 49
3.2 有趣的賦值操作 51
3.3 用縮進創建代碼塊 53
3.4 條件和條件語句 53
3.4.1 布爾值和布爾變數 54
3.4.2 條件語句(if、else和elif) 55
3.4.3 嵌套代碼塊 56
3.4.4 比較運算符 57
3.4.5 斷言 60
3.5 循環 62
3.5.1 while循環 62
3.5.2 for循環 63
3.5.3 跳出循環 65
3.5.4 循環中的else語句 67
3.6 使用exec和eval執行求值字元串 69
3.7 小結 71
3.8 實戰與練習 71
第4章 列表和元組 73
4.1 定義序列 73
4.2 序列的基本操作 74
4.2.1 通過索引操作序列元素 74
4.2.2 分片 77
4.2.3 序列相加 83
4.2.4 序列的乘法 84
4.2.5 檢查某個值是否屬於一個序列 85
4.2.6 序列的長度、最大值和最小值 86
4.3 列表的基本操作 87
4.4 列表方法 89
4.5 元組 93
4.6 小結 95
4.7 實戰與練習 95
第5章 字元串 97
5.1 字元串的基本操作 97
5.2 格式化字元串 98
5.2.1 字元串格式化基礎 98
5.2.2 模板字元串 100
5.2.3 字元串的format方法 101
5.2.4 更進一步控制字元串格式化參數 102
5.2.5 欄位寬度、精度和千位分隔設定 104
5.2.6 符號、對齊、用0填充和進制轉換 105
5.3 字元串方法 107
5.3.1 center方法 107
5.3.2 find方法 108
5.3.3 join方法 109
5.3.4 split方法 110
5.3.5 lower方法、upper方法和capwords函式 111
5.3.6 replace方法 112
5.3.7 strip方法 112
5.3.8 translate方法與maketrans方法 113
5.4 小結 114
5.5 實戰與練習 115
第6章 字典 116
6.1 為什麼要引入字典 116
6.2 創建和使用字典 117
6.2.1 dict函式 117
6.2.2 字典的基本操作 118
6.2.3 字典的格式化字元串 120
6.2.4 序列與疊代 121
6.3 字典方法 124
6.3.1 clear方法 124
6.3.2 copy方法與deepcopy函式 125
6.3.3 fromkeys方法 126
6.3.4 get方法 127
6.3.5 items方法和keys方法 128
6.3.6 pop方法和popitem方法 129
6.3.7 setdefault方法 130
6.3.8 update方法 131
6.3.9 values方法 132
6.4 小結 133
6.5 實戰與練習 133
第7章 函式 134
7.1 懶惰是重用的基石 134
7.2 函式基礎 136
7.2.1 創建函式 136
7.2.2 為函式添加文檔注釋 137
7.2.3 沒有返回值的函式 138
7.3 函式參數 139
7.3.1 改變參數的值 139
7.3.2 關鍵字參數與默認值 144
7.3.3 可變參數 147
7.3.4 將序列作為函式的參數值 151
7.4 作用域 154
7.5 遞歸 156
7.6 小結 158
7.7 實戰與練習 158
第8章 類和對象 159
8.1 對象的魔法 159
8.2 類 160
8.2.1 創建自己的類 160
8.2.2 方法和私有化 161
8.2.3 類代碼塊 163
8.2.4 類的繼承 164
8.2.5 檢測繼承關係 165
8.2.6 多繼承 167
8.2.7 接口 169
8.3 小結 170
8.4 實戰與練習 171
第9章 異常 172
9.1 什麼是異常 172
9.2 主動拋出異常 173
9.2.1 raise語句 173
9.2.2 自定義異常類 175
9.3 捕捉異常 176
9.3.1 try…except語句的基本用法 176
9.3.2 捕捉多個異常 177
9.3.3 用同一個代碼塊處理多個異常 179
9.3.4 捕捉對象 180
9.3.5 異常捕捉中的else子句 182
9.3.6 異常捕捉中的finally子句 183
9.4 異常、函式與棧跟蹤 185
9.5 異常的妙用 186
9.6 小結 188
9.7 實戰與練習 188
第10章 方法、屬性和疊代器 189
10.1 構造方法 189
10.1.1 構造方法的基礎知識 189
10.1.2 重寫普通方法和構造方法 190
10.1.3 使用super函式 193
10.2 特殊成員方法 194
10.2.1 自定義序列 194
10.2.2 從內建列表、字元串和字典繼承 197
10.3 屬性 199
10.3.1 傳統的屬性 199
10.3.2 property函式 201
10.3.3 監控對象中所有的屬性 203
10.4 靜態方法和類方法 205
10.5 疊代器 207
10.5.1 自定義可疊代的類 207
10.5.2 將疊代器轉換為列表 209
10.6 生成器 210
10.6.1 創建生成器 210
10.6.2 遞歸生成器 212
10.7 小結 213
10.8 實戰與練習 214
第二篇 Python高級編程
第11章 正則表達式 217
11.1 在Python語言中使用正則表達式 217
11.1.1 使用match方法匹配字元串 217
11.1.2 使用search方法在一個字元串中查找模式 218
11.1.3 匹配多個字元串 219
11.1.4 匹配任何單個字元 220
11.1.5 使用字元集 221
11.1.6 重複、可選和特殊字元 223
11.1.7 分組 226
11.1.8 匹配字元串的起始和結尾以及單詞邊界 228
11.1.9 使用findall和finditer查找每一次出現的位置 229
11.1.10 用sub和subn搜尋與替換 230
11.1.11 使用split分隔字元串 232
11.2 一些常用的正則表達式 232
11.3 小結 233
11.4 實戰與練習 234
第12章 常用模組 235
12.1 sys模組 235
12.2 os模組 238
12.2.1 獲取與改變工作 238
12.2.2 檔案與操作 239
12.2.3 軟連結與硬連結 240
12.2.4 雜項 241
12.3 集合、堆和雙端佇列(heap模組、deque類) 243
12.3.1 集合 244
12.3.2 堆 247
12.3.3 雙端佇列 249
12.4 時間、日期與日曆(time模組) 250
12.4.1 時間元組 250
12.4.2 格式化日期和時間 251
12.4.3 時間戳的增量 253
12.4.4 計算日期和時間的差值 254
12.4.5 獲取某月和某年的日曆 255
12.5 隨機數(random模組) 256
12.6 數學(math模組) 257
12.7 小結 258
12.8 實戰與練習 258
第13章 檔案和流 259
13.1 打開檔案 259
13.2 操作檔案的基本方法 260
13.2.1 讀檔案和寫檔案 261
13.2.2 管道輸出 262
13.2.3 讀行和寫行 264
13.3 使用FileInput對象讀取檔案 265
13.4 小結 266
13.5 實戰與練習 266
第14章 數據存儲 268
14.1 處理XML格式的數據 268
14.1.1 讀取與搜尋XML檔案 268
14.1.2 字典轉換為XML字元串 270
14.1.3 XML字元串轉換為字典 272
14.2 處理JSON格式的數據 273
14.2.1 JSON字元串與字典互相轉換 273
14.2.2 將JSON字元串轉換為類實例 275
14.2.3 將類實例轉換為JSON字元串 276
14.2.4 類實例列表與JSON字元串互相轉換 277
14.3 將JSON字元串轉換為XML字元串 278
14.4 SQLite資料庫 279
14.4.1 管理SQLite資料庫 279
14.4.2 用Python操作SQLite資料庫 281
14.5 MySQL資料庫 284
14.6 ORM 286
14.6.1 SQLAlchemy 287
14.6.2 SQLObject 291
14.7 非關係型資料庫 294
14.7.1 NoSQL簡介 294
14.7.2 MongoDB資料庫 295
14.7.3 pymongo模組 296
14.8 小結 297
14.9 實戰與練習 297
第15章 TCP與UDP編程 299
15.1 套接字 299
15.1.1 建立TCP服務端 299
15.1.2 服務端接收數據的緩衝區 303
15.1.3 服務端的請求佇列 305
15.1.4 TCP時間戳服務端 307
15.1.5 用Socket實現HTTP伺服器 307
15.1.6 客戶端Socket 311
15.1.7 UDP時間戳服務端 312
15.1.8 UDP時間戳客戶端 313
15.2 socketserver模組 314
15.2.1 實現socketserver TCP時間戳服務端 314
15.2.2 實現socketserver TCP時間戳客戶端 315
15.3 小結 316
15.4 實戰與練習 316
第16章 網路高級編程 317
16.1 urllib3模組 317
16.1.1 傳送HTTP GET請求 318
16.1.2 傳送HTTP POST請求 319
16.1.3 HTTP請求頭 320
16.1.4 HTTP回響頭 322
16.1.5 上傳檔案 323
16.1.6 逾時 325
16.2 twisted框架 326
16.2.1 異步編程模型 327
16.2.2 Reactor(反應堆)模式 329
16.2.3 HelloWorld(twisted框架) 329
16.2.4 用twisted實現時間戳客戶端 331
16.2.5 用twisted實現時間戳服務端 332
16.2.6 用twisted獲取Email信箱列表 333
16.3 FTP客戶端 338
16.4 Email客戶端 341
16.4.1 使用SMTP傳送簡單的Email 341
16.4.2 使用SMTP傳送帶附屬檔案的Email 343
16.4.3 使用POP3接收Email 344
16.4.4 使用IMAP4接收Email 346
16.5 小結 348
16.6 實戰與練習 348
第17章 多執行緒 349
17.1 執行緒與進程 349
17.1.1 進程 349
17.1.2 執行緒 349
17.2 Python與執行緒 350
17.2.1 使用單執行緒執行程式 350
17.2.2 使用多執行緒執行程式 351
17.2.3 為執行緒函式傳遞參數 352
17.2.4 執行緒和鎖 353
17.3 高級執行緒模組 355
17.3.1 Thread類與執行緒函式 355
17.3.2 Thread類與執行緒對象 356
17.3.3 從Thread類繼承 357
17.4 執行緒同步 359
17.4.1 執行緒鎖 359
17.4.2 信號量 361
17.5 生產者—消費者問題與queue模組 364
17.6 小結 366
17.7 實戰與練習 366
第18章 GUI庫:tkinter 368
18.1 tkinter簡介 368
18.2 編寫第一個tkinter程式 368
18.3 布局 370
18.3.1 pack布局 370
18.3.2 place布局 376
18.3.3 grid布局 377
18.4 控制項 378
18.4.1 Label控制項和Button控制項 378
18.4.2 Entry控制項與Text控制項 380
18.4.3 Radiobutton控制項 382
18.4.4 Checkbutton控制項 383
18.4.5 Scale 控制項 384
18.4.6 Listbox控制項 386
18.5 向視窗添加選單 387
18.6 對話框 389
18.7 小結 390
18.8 實戰與練習 390
第19章 GUI庫:PyQt5 391
19.1 PyQt5簡介 391
19.2 安裝PyQt5 392
19.2.1 PyQt5開發環境搭建 392
19.2.2 配置QTDesigner(可視化開發) 392
19.2.3 配置PyUIC 395
19.3 編寫第一個PyQt5程式 397
19.4 視窗的基本功能 398
19.4.1 設定視窗圖示 398
19.4.2 顯示提示框 398
19.4.3 關閉視窗 399
19.4.4 訊息盒子 400
19.4.5 視窗居中 401
19.5 布局 402
19.5.1 絕對布局 402
19.5.2 盒布局 403
19.5.3 格線布局 405
19.6 控制項 406
19.6.1 QPushButton控制項 406
19.6.2 QLineEdit控制項 408
19.6.3 QCheckBox控制項 409
19.6.4 QSlider控制項 410
19.6.5 QProgressBar控制項 411
19.6.6 QPixmap控制項 413
19.6.7 QComboBox控制項 414
19.6.8 QCalendarWidget控制項 415
19.7 選單 416
19.8 小結 418
19.9 實戰與練習 418
第20章 測試 419
20.1 先測試後編碼 419
20.1.1 為代碼劃定邊界 420
20.1.2 測試的步驟 421
20.2 測試工具 421
20.2.1 doctest 421
20.2.2 unittest 423
20.3 檢查原始碼 424
20.3.1 PyLint 425
20.3.2 Flake8 426
20.4 性能分析 428
20.5 小結 429
20.6 實戰與練習 429
第三篇 Python Web開發
第21章 Python Web框架:Flask 433
21.1 Flask基礎知識 434
21.1.1 使用8行代碼搞定Web套用 434
21.1.2 靜態路由和動態路由 435
21.1.3 獲取HTTP請求數據 438
21.1.4 Response與Cookie 439
21.1.5 會話 441
21.1.6 靜態檔案和重定向 443
21.2 Jinja2模板 443
21.2.1 第一個基於Jinja2模板的Web套用 444
21.2.2 在Jinja2模板中使用複雜數據 445
21.2.3 在Jinja2模板中的過濾器 447
21.2.4 條件控制 448
21.2.5 循環控制 450
21.2.6 宏操作 452
21.2.7 include指令 455
21.2.8 模板繼承 457
21.2.9 使用flask-bootstrap模組集成twitter Bootstrap 458
21.2.10 自定義錯誤頁面 460
21.3 Web表單與Flask-WTF擴展 461
21.3.1 表單類 462
21.3.2 簡單的表單組件 464
21.3.3 單選和多選組件 467
21.3.4 表單校驗器 469
21.3.5 獲取和設定表單組件中的數據 472
21.4 小結 473
21.5 實戰與練習 474
第22章 Python Web框架:Django 475
22.1 Django開發環境搭建 475
22.2 Django基礎知識 476
22.2.1 建立第一個Django工程 476
22.2.2 Django工程結構分析 477
22.2.3 遠程訪問與連線埠號 477
22.2.4 用PyCharm建立Django工程 478
22.2.5 添加路由 480
22.2.6 在MyCharm中指定IP和連線埠號 482
22.2.7 處理HTTP請求 482
22.2.8 Response與Cookie 484
22.2.9 讀寫Session 485
22.2.10 用戶登錄 487
22.2.11 靜態檔案 488
22.3 Django模板 490
22.3.1 編寫第一個基於Django模板的套用 490
22.3.2 條件控制標籤 492
22.3.3 循環控制標籤 493
22.3.4 過濾器 494
22.4 小結 496
22.5 實戰與練習 496
第四篇 Python科學計算與數據分析
第23章 科學計算庫:NumPy 499
23.1 NumPy開發環境搭建 499
23.2 第一個NumPy程式 500
23.3 NumPy數組 501
23.3.1 創建多維數組 501
23.3.2 獲取數組值和數組的分片 502
23.3.3 改變數組的維度 502
23.3.4 水平組合數組 503
23.3.5 垂直數組組合 505
23.3.6 水平分隔數組 505
23.3.7 垂直分隔數組 507
23.3.8 將數組轉換為Python列表 508
23.4 NumPy常用函式 509
23.4.1 存取NumPy數組 509
23.4.2 讀寫CSV檔案 510
23.4.3 成交量加權平均價格 511
23.4.4 數組的最大值、最小值和取值範圍 512
23.4.5 計算數組的中位數和方差 513
23.4.6 計算兩隻股票的相關性 514
23.5 小結 515
23.6 實戰與練習 515
第24章 數據可視化庫:Matplotlib 516
24.1 Matplotlib開發環境搭建 516
24.2 基礎知識 517
24.2.1 第一個Matplotlib程式 517
24.2.2 繪製正弦曲線和餘弦曲線 518
24.2.3 繪製隨機點 519
24.2.4 繪製柱狀圖 520
24.2.5 繪製直方圖與盒狀圖 521
24.2.6 繪製餅圖 523
24.3 定製顏色和樣式 524
24.3.1 定製曲線的顏色 524
24.3.2 定製離散點的樣式 525
24.3.3 定製柱狀圖顏色 526
24.3.4 定製餅圖顏色 526
24.3.5 定製曲線類型 527
24.3.6 定製柱狀圖的填充模式 528
24.4 注釋 529
24.4.1 在坐標繫上顯示標題 529
24.4.2 使用LaTex格式的標題 529
24.4.3 為X軸和Y軸添加注釋 530
24.4.4 在坐標系指定位置放置注釋 531
24.4.5 為文本注釋添加Box 532
24.5 小結 532
24.6 實戰與練習 533
第25章 數據分析庫:Pandas 534
25.1 Pandas開發環境搭建 534
25.2 樣本數據集 534
25.3 Pandas基礎知識 535
25.3.1 數據集的裝載與基礎操作 535
25.3.2 查看數據集中的列 536
25.3.3 查看數據集的行 537
25.3.4 查看數據集單元格中的數據 538
25.3.5 對數據集進行分組統計 539
25.3.6 可視化統計數據 540
25.4 Pandas數據類型 541
25.4.1 創建Series 541
25.4.2 創建DataFrame 542
25.4.3 Series的基本操作 543
25.4.4 Series的方法 544
25.4.5 Series的條件過濾 545
25.4.6 DataFrame的條件過濾 546
25.5 小結 547
25.6 實戰與練習 548
第五篇 Python Web爬蟲技術
第26章 網路爬蟲與Beautiful Soup 551
26.1 網路爬蟲基礎 551
26.1.1 爬蟲分類 552
26.1.2 編寫第1個網路爬蟲 552
26.1.3 保存抓取的數據 555
26.1.4 從百度抓取海量比基尼美女圖片 557
26.2 HTML分析庫:Beautiful Soup 560
26.2.1 如何使用Beautiful Soup 560
26.2.2 Tag對象的name和string屬性 562
26.2.3 讀寫標籤屬性 563
26.2.4 用Beautiful Soup分析京東首頁的HTML代碼 564
26.2.5 通過回調函式過濾標籤 565
26.3 支持下載佇列的多執行緒網路爬蟲 566
26.4 小結 568
26.5 實戰與練習 568
第27章 網路爬蟲框架:Scrapy 570
27.1 Scrapy基礎知識 570
27.1.1 Scrapy簡介 570
27.1.2 Scrapy安裝 571
27.1.3 Scrapy Shell抓取Web資源 571
27.1.4 XPath入門 573
27.2 用Scrapy編寫網路爬蟲 574
27.2.1 創建和使用Scrapy工程 574
27.2.2 在PyCharm中使用Scrapy 575
27.2.3 使用Scrapy抓取數據並通過XPath指定解析規則 576
27.2.4 將抓取到的數據保存為多種格式的檔案 577
27.3 小結 578
27.4 實戰與練習 578
第六篇 Python項目實戰
第28章 Web項目實戰:基於 Flask的美團網 581
28.1 項目概述 581
28.1.1 項目效果演示 581
28.1.2 項目工程結構 582
28.2 美團網核心功能實現 583
28.2.1 設計服務API 583
28.2.2 用Ajax技術與服務端互動 584
28.3 Python與微信支付 585
28.3.1 微信支付要準備的數據以及支付流程 585
28.3.2 編寫支付核心類WXPay 586
28.4 小結 588
第29章 Web項目實戰:基於Django的58同城 589
29.1 項目效果演示 589
29.2 操作MySQL資料庫 590
29.3 賬號 590
29.3.1 用戶註冊 591
29.3.2 用戶登錄 592
29.4 招聘頁面 594
29.5 二手車頁面 595
29.6 小結 597
第30章 網路爬蟲實戰:天氣預報服務API 598
30.1 項目效果演示 598
30.2 建立MySQL資料庫 599
30.3 抓取天氣預報數據 599
30.4 編寫天氣預報服務API 600
30.5 實現Web版天氣預報查詢客戶端 601
30.6 小結 601
第31章 爬蟲項目實戰:胸罩銷售數據分析 602
31.1 項目效果演示 602
31.2 天貓胸罩銷售數據 604
31.2.1 天貓胸罩銷售數據分析 604
31.2.2 抓取天貓胸罩銷售數據 605
31.2.3 抓取胸罩商品列表 605
31.2.4 將抓取的銷售數據保存到SQLite資料庫中 606
31.3 京東胸罩銷售數據 607
31.3.1 京東胸罩銷售數據分析 607
31.3.2 抓取京東胸罩銷售數據 608
31.4 數據清洗 609
31.5 數據分析與可視化 611
31.5.1 用SQL語句分析胸罩(按罩杯尺寸)的銷售比例 611
31.5.2 用Pandas和Matplotlib對胸罩銷售比例進行可視化分析 612
31.5.3 按上胸圍分析胸罩的銷售比例 613
31.5.4 罩杯和上胸圍綜合數據可視化分析 614
31.5.5 統計哪一種顏色的胸罩賣得最好 615
31.5.6 用盒狀圖與直方圖表示罩杯與上胸圍分布 617
31.6 小結 618
第32章 GUI項目實戰:動態修改域名指向的IP 619
32.1 搭建開發環境 619
32.2 項目效果演示 619
32.3 獲取公網IP 620
32.4 定時更新公網IP 621
32.5 更新域名對應的IP 622
32.6 小結 623
第33章 遊戲項目實戰:俄羅斯方塊 624
33.1 搭建開發環境 624
33.2 項目效果演示 624
33.3 用戶註冊 625
33.4 用戶登錄 626
33.5 遊戲界面繪製和渲染 628
33.6 用按鍵控制遊戲 629
33.7 播放背景音樂 630
33.8 用戶積分 631
33.9 小結 632