《Python從菜鳥到高手(第2版)》是2022年清華大學出版社出版的圖書,作者是李寧。
基本介紹
- 中文名:Python從菜鳥到高手(第2版)
- 作者:李寧
- 出版社:清華大學出版社
- 出版時間:2022年11月1日
- 定價:95 元
- ISBN:9787302613947
內容簡介,圖書目錄,
內容簡介
本書從實戰角度系統講解了Python核心知識點以及Python在Web開發、數據分析、網路爬蟲、桌面套用等領域的各種套用實踐。本書用超過10萬行代碼、500個案例完美演繹了Python在各個領域的出色表現,每一個案例都擁有詳細的實現步驟,帶領讀者由淺入深系統掌握Python語言的核心以及Python全棧開發的技能。本書分為四篇,共26章,介紹Python基礎、存儲解決方案、網路與並發和Python高級技術等內容。 本書適用於零基礎的初學者,適合作為高等院校教材,也適合想掌握Python開發的程式設計師以及所有對Python感興趣的技術人員參考。
圖書目錄
第一篇 Python基礎知識
第1章 Python入門 3
1.1 搭建Python編程環境 3
1.1.1 獲取Python安裝包 3
1.1.2 安裝Windows版的Python安裝包 4
1.1.3 安裝macOS版的Python安裝包 4
1.1.4 安裝Linux版的Python安裝包 4
1.2 搭建和使用PyCharm 5
1.2.1 下載和安裝PyCharm 5
1.2.2 創建PyCharm Python工程 6
1.2.3 在PyCharm中添加Python環境 7
1.2.4 在PyCharm中運行Python程式 9
1.3 Python中的REPL環境 9
1.4 第一個Python程式 10
1.5 調試Python程式 10
1.6 實戰與演練 12
1.7 本章小結 12
第2章 Python語言基礎 13
2.1 運行helloworld.py會發生什麼情況 13
2.2 變數 14
2.2.1 變數的定義和初始化 14
2.2.2 變數的命名 15
2.2.3 避免弄錯變數名 16
2.2.4 如何理解變數 17
2.3 字元串基礎 18
2.3.1 單引號字元串和轉義符 18
2.3.2 拼接字元串 19
2.3.3 保持字元串的原汁原味 20
2.3.4 長字元串 21
2.4 數字 22
2.4.1 基礎知識 22
2.4.2 大整數 23
2.4.3 二進制、八進制和十六進制 24
2.4.4 數字的格式化輸出 25
2.5 獲取用戶輸入 26
2.6 注釋 26
2.7 實戰與演練 27
2.8 本章小結 28
第3章 條件與循環 29
3.1 條件和條件語句 29
3.1.1 布爾(Boolean)值和布爾變數 29
3.1.2 條件語句(if、else和elif) 30
3.1.3 嵌套代碼塊 32
3.1.4 比較運算符 33
3.1.5 斷言 35
3.1.6 pass語句與空代碼塊 36
3.2 循環 37
3.2.1 while循環 37
3.2.2 for循環 38
3.2.3 跳出循環 40
3.2.4 循環中的else語句 41
3.3 實戰與演練 42
3.4 本章小結 43
第4章 列表和元組 44
4.1 定義列表 44
4.2 列表的基本操作 44
4.2.1 通過索引操作列表元素 44
4.2.2 分片 46
4.2.3 列表的加法 48
4.2.4 列表的乘法 48
4.2.5 in運算符 48
4.2.6 列表的長度、最大值和最小值 49
4.2.7 列表封包和列表解包 50
4.2.8 修改列表元素 52
4.2.9 刪除列表元素 52
4.2.10 分片賦值 52
4.3 列表方法 53
4.4 元組 56
4.5 for循環與列表 57
4.5.1 使用for循環枚舉列表與元組中的元素 57
4.5.2 使用for-in循環遍歷列表與元組中的元素 58
4.5.3 使用for表達式自動生成列表 59
4.6 實戰與演練 60
4.7 本章小結 62
第5章 字元串 63
5.1 字元串格式化 63
5.1.1 字元串格式化基礎 63
5.1.2 模板字元串 65
5.1.3 字元串的format方法 65
5.1.4 更進一步控制字元串格式化參數 67
5.1.5 欄位寬度、精度和千分位分隔設定 68
5.1.6 符號、對齊、用0填充和進制轉換 69
5.1.7 f字元串 70
5.2 字元串方法 70
5.2.1 center方法 70
5.2.2 find方法 71
5.2.3 join方法 71
5.2.4 split方法 72
5.2.5 lower方法、upper方法和capwords函式 73
5.2.6 replace方法 74
5.2.7 strip方法 74
5.2.8 translate方法與maketrans方法 75
5.3 實戰與演練 75
5.4 本章小結 76
第6章 字典 77
6.1 為什麼要引入字典 77
6.2 創建和使用字典 78
6.2.1 dict函式 78
6.2.2 字典的基本操作 78
6.2.3 字典的格式化字元串 80
6.2.4 字典疊代 81
6.3 字典方法 82
6.3.1 clear方法 82
6.3.2 copy方法與deepcopy函式 82
6.3.3 fromkeys方法 83
6.3.4 get方法 84
6.3.5 items方法和keys方法 84
6.3.6 pop方法和popitem方法 85
6.3.7 setdefault方法 86
6.3.8 update方法 87
6.3.9 values方法 87
6.4 實戰與演練 88
6.5 本章小結 89
第7章 函式 90
7.1 函式基礎 90
7.1.1 定義函式 90
7.1.2 為函式添加文檔注釋 90
7.1.3 沒有返回值的函式 91
7.2 函式參數 92
7.2.1 改變參數的值 92
7.2.2 命名參數與默認值 97
7.2.3 可變參數 99
7.2.4 將序列作為函式的參數值 100
7.3 作用域 103
7.4 實戰與演練 104
7.5 本章小結 105
第8章 類和對象 106
8.1 對象的魔法 106
8.2 類 106
8.2.1 創建自己的類 106
8.2.2 方法和私有化 108
8.2.3 類代碼塊 110
8.2.4 類的繼承 111
8.2.5 檢測繼承關係 111
8.2.6 多繼承 113
8.2.7 接口 114
8.3 實戰與演練 116
8.4 本章小結 116
第9章 異常 117
9.1 什麼是異常 117
9.2 主動拋出異常 117
9.2.1 raise語句 118
9.2.2 自定義異常類 119
9.3 捕捉異常 120
9.3.1 try…except語句的基本用法 120
9.3.2 捕捉多個異常 121
9.3.3 用同一個代碼塊處理多個異常 123
9.3.4 捕捉對象 124
9.3.5 異常捕捉中的else子句 126
9.3.6 異常捕捉中的finally子句 127
9.4 異常、函式與棧跟蹤 129
9.5 異常的妙用 129
9.6 實戰與演練 131
9.7 本章小結 131
第10章 方法、屬性和疊代器 132
10.1 構造方法 132
10.1.1 構造方法的基礎知識 132
10.1.2 重寫普通方法和構造方法 133
10.1.3 使用super函式 135
10.2 特殊成員方法 136
10.2.1 自定義序列 136
10.2.2 從內建列表、字元串和字典繼承 138
10.3 方法重載 140
10.3.1 Python為什麼在語法上不支持方法重載 141
10.3.2 用魔法方法讓Python支持方法重載 142
10.4 屬性 145
10.4.1 傳統的屬性 145
10.4.2 property函式 147
10.4.3 監控對象中所有的屬性 148
10.5 靜態方法和類方法 150
10.6 疊代器 152
10.7 生成器 153
10.8 裝飾器 154
10.8.1 疊加使用Python裝飾器 154
10.8.2 定義Python裝飾器 154
10.8.3 理解Python函式 155
10.8.4 理解Python裝飾器 157
10.9 實戰與演練 158
10.10 本章小結 159
第二篇 存儲解決方案
第11章 檔案和流 163
11.1 打開檔案 163
11.2 操作檔案的基本方法 164
11.2.1 讀檔案和寫檔案 165
11.2.2 管道輸出 166
11.2.3 讀行和寫行 167
11.3 使用FileInput對象讀取檔案 169
11.4 實戰與演練 170
11.5 本章小結 170
第12章 數據存儲 171
12.1 處理XML格式的數據 171
12.1.1 讀取與搜尋XML檔案 171
12.1.2 字典轉換為XML字元串 172
12.1.3 XML字元串轉換為字典 174
12.2 處理JSON格式的數據 175
12.2.1 JSON字元串與字典互相轉換 175
12.2.2 將JSON字元串轉換為類實例 177
12.2.3 將類實例轉換為JSON字元串 178
12.2.4 類實例列表與JSON字元串互相轉換 179
12.3 將JSON字元串轉換為XML字元串 180
12.4 SQLite資料庫 180
12.4.1 管理SQLite資料庫 181
12.4.2 用Python操作SQLite資料庫 183
12.5 MySQL資料庫 186
12.6 非關係型資料庫 188
12.6.1 NoSQL簡介 188
12.6.2 MongoDB資料庫 188
12.6.3 pymongo模組 190
12.7 實戰與演練 191
12.8 本章小結 192
第三篇 網路與並發
第13章 TCP與UDP編程 195
13.1 套接字 195
13.1.1 建立TCP服務端 195
13.1.2 服務端接收數據的緩衝區 199
13.1.3 服務端的請求佇列 200
13.1.4 時間戳服務端 202
13.1.5 用Socket實現HTTP伺服器 203
13.1.6 客戶端Socket 206
13.1.7 UDP時間戳服務端 207
13.1.8 UDP時間戳客戶端 208
13.2 socketserver模組 209
13.2.1 實現socketserver TCP時間戳服務端 209
13.2.2 實現socketserver TCP時間戳客戶端 210
13.3 實戰與演練 211
13.4 本章小結 212
第14章 網路高級編程 213
14.1 urllib3模組 213
14.1.1 傳送HTTP GET請求 213
14.1.2 傳送HTTP POST請求 214
14.1.3 HTTP請求頭 216
14.1.4 HTTP回響頭 218
14.1.5 上傳檔案 219
14.1.6 逾時 220
14.2 Twisted框架 222
14.2.1 異步編程模型 222
14.2.2 Reactor(反應堆)模式 224
14.2.3 HelloWorld(Twisted框架) 224
14.2.4 用Twisted實現時間戳客戶端 226
14.2.5 用Twisted實現時間戳服務端 227
14.3 FTP客戶端 228
14.4 實戰與演練 230
14.5 本章小結 230
第15章 執行緒與協程 231
15.1 執行緒與進程 231
15.1.1 進程 231
15.1.2 執行緒 231
15.2 Python與執行緒 232
15.2.1 使用單執行緒執行程式 232
15.2.2 使用多執行緒執行程式 233
15.2.3 為執行緒函式傳遞參數 234
15.2.4 執行緒和鎖 235
15.3 高級執行緒模組(threading) 236
15.3.1 Thread類與執行緒函式 236
15.3.2 Thread類與執行緒對象 237
15.3.3 從Thread類繼承 238
15.4 執行緒同步 240
15.4.1 執行緒鎖 240
15.4.2 信號量 242
15.5 協程 243
15.5.1 同步協程 244
15.5.2 異步協程 245
15.6 實戰與演練 245
15.7 本章小結 246
第四篇 Python高級技術
第16章 GUI庫:PyQt6 249
16.1 PyQt6簡介 249
16.2 PyQt6運行環境安裝 250
16.3 編寫第一個PyQt6程式 250
16.4 視窗的基本功能 251
16.4.1 視窗圖示 251
16.4.2 提示框 251
16.4.3 關閉視窗 252
16.4.4 訊息盒子 253
16.4.5 視窗居中 254
16.5 布局 255
16.5.1 絕對布局 255
16.5.2 盒布局 256
16.5.3 格線布局 257
16.6 控制項 258
16.6.1 QPushButton控制項 259
16.6.2 QLineEdit控制項 261
16.6.3 QCheckBox控制項 261
16.6.4 QSlider控制項 263
16.6.5 QProgressBar控制項 264
16.6.6 QPixmap控制項 265
16.6.7 QComboBox控制項 266
16.6.8 QCalendarWidget控制項 267
16.7 選單 269
16.8 實戰與演練 270
16.9 本章小結 270
第17章 PyQt6遊戲項目實戰:俄羅斯方塊 271
17.1 遊戲概述 271
17.2 實現遊戲的思路 271
17.3 遊戲視窗 272
17.4 創建新的方塊 273
17.5 繪製俄羅斯方塊 274
17.6 回響鍵盤動作 275
17.7 移動和旋轉方塊 276
17.8 顯示下一個俄羅斯方塊 278
17.9 本章小結 278
第18章 Python遊戲引擎:Pygame基礎知識 279
18.1 Pygame入門 279
18.1.1 搭建Pygame開發環境 279
18.1.2 使用Pygame 279
18.1.3 顯示文本 281
18.1.4 顯示中文 282
18.1.5 繪製圓 282
18.1.6 繪製矩形 283
18.1.7 繪製直線 284
18.1.8 繪製弧形 285
18.2 鍵盤和滑鼠事件 286
18.2.1 鍵盤事件 286
18.2.2 滑鼠事件 287
18.3 實戰與演練 289
18.4 本章小結 290
第19章 Python遊戲引擎:Pygame高級技術 291
19.1 圖像處理 291
19.1.1 裝載點陣圖 291
19.1.2 裝載星空背景 291
19.1.3 顯示和旋轉地球 292
19.2 Pygame精靈(Sprite) 293
19.2.1 為Sprite準備動畫素材 294
19.2.2 編寫精靈類 294
19.2.3 裝載Sprite動畫資源 295
19.2.4 縮放Sprite 295
19.2.5 繪製幀 296
19.2.6 設定Sprite動畫幀率 296
19.2.7 精靈組 297
19.2.8 實現不同的幀率 297
19.2.9 完整案例:Sprite演示 299
19.3 碰撞檢測 302
19.3.1 矩形碰撞檢測 302
19.3.2 圓形碰撞檢測 302
19.3.3 遮罩碰撞檢測 303
19.3.4 精靈與組之間的碰撞檢測 304
19.3.5 組與組之間的碰撞檢測 304
19.4 給遊戲加上音效 305
19.5 實戰與演練 307
19.6 本章小結 308
第20章 Pygame遊戲項目實戰:塔防 310
20.1 遊戲概述 310
20.2 遊戲中需要完成的工作 310
20.3 遊戲初始化 310
20.4 展現遊戲角色 311
20.5 回響滑鼠和鍵盤事件 312
20.6 碰撞檢測 313
20.7 本章小結 313
第21章 網路爬蟲與Beautiful Soup 314
21.1 網路爬蟲基礎 314
21.1.1 爬蟲分類 314
21.1.2 編寫第1個網路爬蟲 315
21.1.3 保存抓取的數據 318
21.1.4 從百度抓取海量比基尼美女圖片 319
21.2 HTML分析庫:Beautiful Soup 323
21.2.1 如何使用Beautiful Soup 323
21.2.2 Tag對象的name和string屬性 324
21.2.3 讀寫標籤屬性 325
21.2.4 用Beautiful Soup分析京東商城首頁的HTML代碼 327
21.2.5 通過回調函式過濾標籤 328
21.3 實戰與演練 328
21.4 本章小結 329
第22章 Python辦公自動化 330
22.1 Python與Excel互動 330
22.1.1 Python為什麼要與Office互動 330
22.1.2 Python與Office互動的各種技術 330
22.1.3 安裝openpyxl 331
22.1.4 創建和保存Workbook 331
22.1.5 讀取Excel文檔 332
22.1.6 獲取和設定單元格中的值 333
22.1.7 插入和刪除行 334
22.1.8 插入和刪除列 335
22.1.9 訪問多個單元格 336
22.1.10 改變行高和列寬 337
22.1.11 設定單元格文字顏色、字型和背景色 338
22.1.12 使用公式 339
22.1.13 向Excel文檔插入圖像 340
22.1.14 格式化數字和日期 340
22.1.15 合併單元格和取消單元格合併 341
22.1.16 Excel與Pandas結合 342
22.2 Python與Word互動 343
22.2.1 讀取Word文檔的段落 343
22.2.2 獲取段落中的樣式文本 344
22.2.3 設定文本的樣式 344
22.2.4 向Word文檔添加文本 344
22.2.5 向Word文檔添加標題 345
22.2.6 添加換頁符 345
22.2.7 在Word文檔中插入圖像 346
22.2.8 將Word文檔轉換為PDF文檔 346
22.3 Python與PowerPoint互動 347
22.3.1 讀取幻燈片中的文本 347
22.3.2 獲取某一頁幻燈片中的文本 348
22.3.3 新建幻燈片 348
22.3.4 為幻燈片添加一個文本框 348
22.3.5 向幻燈片添加圖像 349
22.4 Python與PDF互動 349
22.4.1 讀取PDF文檔的文本 349
22.4.2 創建PDF文檔 350
22.5 實戰與演練 350
22.6 本章小結 351
第23章 Python爬蟲項目實戰:抓取網路數據和圖片 352
23.1 網路庫requests 352
23.1.1 requests的HelloWorld 352
23.1.2 HTTP GET請求 353
23.1.3 添加HTTP請求頭 353
23.1.4 抓取二進制數據 354
23.1.5 HTTP POST請求 354
23.1.6 回響數據 355
23.2 項目1:抓取酷狗紅歌榜 356
23.2.1 項目分析 356
23.2.2 項目的完整實現 357
23.3 項目2:抓取金字塔圖片,並保存為Excel文檔 358
23.3.1 項目分析 359
23.3.2 webp轉換為jpg格式 359
23.3.3 項目的完整實現 359
23.4 本章小結 362
第24章 Python Web框架:Django 363
24.1 Django安裝環境搭建 363
24.2 Django基礎知識 363
24.2.1 建立第一個Django工程 363
24.2.2 Django工程結構分析 365
24.2.3 遠程訪問與連線埠號 365
24.2.4 用PyCharm建立Django工程 366
24.2.5 添加路由 367
24.2.6 處理HTTP請求 368
24.2.7 Response與Cookie 370
24.2.8 讀寫Session 372
24.2.9 用戶登錄 373
24.2.10 靜態檔案 375
24.3 Django模板 377
24.3.1 編寫第一個基於Django模板的套用 377
24.3.2 條件控制標籤 378
24.3.3 循環控制標籤 379
24.3.4 過濾器 380
24.4 實戰與演練 382
24.5 本章小結 382
第25章 Python Web項目實戰:基於Django的58同城網站 383
25.1 項目演示 383
25.2 操作MySQL資料庫 384
25.3 賬號 385
25.3.1 用戶註冊 385
25.3.2 用戶登錄 386
25.4 招聘頁面 388
25.5 二手車頁面 390
25.6 本章小結 392
第26章 Python擴展學習 393
26.1 用Python控制滑鼠和鍵盤 393
26.1.1 獲取滑鼠的位置 393
26.1.2 實時獲取滑鼠的位置 393
26.1.3 移動和拖動滑鼠 394
26.1.4 模擬單擊和雙擊滑鼠 394
26.1.5 模擬按鍵 395
26.1.6 模擬鍵盤輸入 395
26.2 Python與C/C++互動 395
26.2.1 Python通過cffi調用C/C++動態庫 396
26.2.2 Python通過cython調用C/C++動態庫 396
26.3 製作Python安裝程式 397
26.4 實戰與演練 397
26.5 本章小結 398