Python實戰教程(微課版)
孔祥盛
相關主題
商品描述
本書採用“案例螺旋升級”驅動“知識螺旋升級”的編寫模式,針對同一案例,由淺入深地講解了10種實現方法,鞏固讀者所學知識,幫助讀者在實踐中體會知識的價值。全書共16章,內容涵蓋基本數據類型、自定義函數、控制語句、自定義模塊和導入語句等Python基礎知識,面向對象編程、文件管理、路徑管理、序列化和持久化等Python中級知識,Web開發、數據庫開發等Python高級知識,字符編碼、BOM等拓展知識。
本書內容豐富、講解深入,可作為普通高等學校電腦專業相關課程的教材,也可作為廣大Python開發愛好者的自學參考書。
作者簡介
孔祥盛,副教授,精通Java、JavaScript、PHP、Python等编程语言,熟悉Web开发、爬虫、自动化测试、数据分析与数据挖掘、数据可视化、数据库等技术,擅长将抽象的理论知识具体化、生活化,善于将综合知识融会贯通于项目案例,主编教材《PHP基础与实例教程》 印次20余次,并获河南省普通高等教育“十四五”规划教材立项、河南省优秀教材二等奖,主编教材《MySQL数据库基础与实例教程》印次近20次。
目錄大綱
目錄
第 1 章 Python 概述 13
1.1Python 簡介 13
1.2Python 的特點 14
1.3Python 解釋器(Python Interpreter) 15
1.4安裝 Python 解釋器 15
上機實踐 1:安裝 Python 解釋器和配置 Path 環境變量 15
場景 1:安裝 Python 解釋器(Python Interpreter) 15
場景 2:手工配置 Path 環境變量 18
上機實踐 2:交互模式下運行 Python 代碼 19
場景 1:通過 cmd 命令窗口啟動 Python Shell 19
場景 2:Python Shell 與 Python 解釋器的交互 20
場景 3:理解交互模式的特點 20
場景 4:退出 Python Shell(兩種方法) 21
上機實踐 3:運行 Python 程序(採用直接方式) 21
場景 1:準備工作 21
場景 2:使用記事本程序編寫 Python 程序 22
場景 3:採用直接方式運行 Python 程序 22
場景 4:修改 Python 解釋器解析 Python 程序的字符編碼 23
場景 5:將文本文件中文本的字符編碼修改為 UTF-8 24
場景 6:Python 解釋器使用 GBK 碼解析 UTF-8 編碼的程序 25
場景 7:Python 解釋器使用 UTF-8 碼解析 GBK 編碼的程序 25
上機實踐 4:運行 Python 程序(採用間接方式) 25
上機實踐 5:利用自省功能自學 Python 27
場景 1:查看 Python 會話上定義的所有對象 28
場景 2:查看對象的數據類型(交互模式下) 28
場景 3:查看對象的屬性和方法 28
場景 4:查看對象的幫助信息 29
場景 5:查看 builtins 的相關信息 30
第 2 章 標識符和對象名 33
2.1標識符 33
2.1.1標識符的命名規則 33
2.1.2單下劃線標識符“_”的妙用 33
2.2Python 內存優化機制 33
2.3對象名的管理 33
2.3.1使用賦值語句為對象命名 34
2.3.2使用 del 語句刪除對象名 34
2.4對象和對象名間的關系總結 34
上機實踐 1:認識保留字(也叫關鍵字) 35
場景 1:查看 Python 的保留字 35
場景 2:理解 sys.path 和 import 語句的關系 36
場景 3:修改 sys.path 的值(第 1 種方法) 37
場景 4:修改 sys.path 的值(第 2 種方法) 37
上機實踐 2:理解 Python 的內存優化機制 37
場景 1:通過對象的內存地址理解 Python 的內存優化機制 1 37
場景 2:通過對象的內存地址理解 Python 的內存優化機制 2 38
上機實踐 3:對象名的管理 39
場景 1:理解賦值語句的執行流程 39
場景 2:其他格式的賦值語句 40
場景 3:使用 del 語句刪除對象名 40
第 3 章 初識內置數據類型 42
3.1常用的內置數據類型 42
3.2數字、布爾型數據和 None 42
3.2.1 數字 42
3.2.2布爾型數據(bool) 42
3.2.3None 42
3.3字符串 str 43
3.3.1字符串的特點 43
3.3.2轉義字符 43
3.3.3字符串的索引操作 43
3.3.4字符串的切片操作 44
3.3.5格式化字符串 44
3.4元組 tuple 44
3.5列表 list 44
3.6集合 set 44
3.7字典 dict 45
3.8對象的拷貝 45
上機實踐 1:認識數字、布爾型數據和 None 45
場景 1:認識整數 int 和浮點數 float 45
場景 2:認識布爾型數據 46
場景 3:None 對象的數據類型是 NoneType 46
上機實踐 2:認識字符串 46
場景 1:認識字符串 str 46
場景 2:瞭解單行註釋和多行註釋的區別 47
場景 3:認識轉義字符 47
場景 4:字符串的索引操作 48
場景 5:字符串的切片操作 48
場景 6:字符串不可變更 51
場景 7:格式化字符串 51
上機實踐 3:認識元組 tuple 51
場景 1:普通元組、空元組和單元素元組 51
場景 2:元組的索引和切片 51
場景 3:元組不可變更 52
上機實踐 4:認識列表 list 52
場景 1:普通列表、空列表 52
場景 2:列表的索引和切片 53
場景 3:列表可變更 53
上機實踐 5:認識集合 set 53
場景 1:集合內的元素不可重復、無先後順序 54
場景 2:空集合對象的創建 54
場景 3:集合內的元素不可變更 54
場景 4:集合的長度可變更 54
上機實踐 6:認識字典 dict 54
場景 1:字典內元素的“鍵”不可重復 54
場景 2:字典內元素的“鍵”不可變更 54
場景 3:空字典對象的創建 54
場景 4:字典是可變更的 55
上機實踐 7:對象的拷貝 55
場景 1:使用賦值語句“=”拷貝對象 55
場景 2:淺拷貝(借助切片實現) 56
場景 3:淺拷貝(借助 copy 模塊的 copy 函數實現) 58
場景 4:深拷貝 58
上機實踐 8:理解“Python 中一切皆對象” 59
第 4 章 運算符和數據類型轉換 61
4.1運算符 61
4.1.1算術運算符 61
4.1.2比較運算符 61
4.1.3賦值運算符 61
4.1.4邏輯運算符 62
4.1.5成員運算符 62
4.1.6對象比較運算符 is 62
4.1.7條件運算符 62
4.2類型轉換的必要性 62
4.3理解 True 和“真”、False 和“假” 63
4.4精簡代碼的技巧 63
上機實踐 1:運算符 63
場景 1:算術運算符 63
場景 2:比較運算符 64
場景 3:成員運算符 64
場景 4:對象比較運算符 is 65
場景 5:條件運算符 65
場景 6:算術運算符的其它用途 65
上機實踐 2:顯式類型轉換的必要性 66
場景 1:避免“TypeError”異常 66
場景 2:input 內置函數的使用 66
場景 3:實現一個簡易版的整數加法器 67
上機實踐 3:常用的類型轉換函數 67
場景 1:將字符串'10.0'轉換為整數 10 67
場景 2:將字符串、列表、集合、字典轉換為元組 67
場景 3:將字符串、元組、集合、字典轉換為列表 67
場景 4:將字符串、元組、列表、字典轉換為集合 67
場景 5:將元組、列表轉換為字典 67
場景 6:任意對象都可以轉換為布爾型數據 68
場景 7:eval 函數的用法 68
場景 8:Python 表達式和 Python 語句的區別 68
上機實踐 4:邏輯運算符 69
場景 1:邏輯運算符作用於 True 和 False 69
場景 2:邏輯運算符作用於普通對象 69
第 5 章 自定義函數 70
5.1代碼塊 70
5.2自定義函數的語法格式 71
5.3函數的生命周期 71
5.4命名空間(namespace) 71
5.4.1命名空間概述 72
5.4.2內部函數 72
5.4.3命名空間的 LEGB 規則 72
5.6形式參數 parameter 和實際參數 argument 73
5.7return 語句 73
5.8lambda 表達式 74
5.9組包和解包 74
5.10參數是可變更對象時的註意事項 74
上機實踐 1:理解函數的生命周期 74
場景 1:準備工作 74
場景 2:函數的定義 74
場景 3:創建函數對象 74
場景 4:查看函數對象的信息 75
場景 5:調用函數對象 76
場景 6:刪除函數對象 77
上機實踐 2:理解命名空間 77
場景 1:理解內置命名空間與全局命名空間之間的關系 77
場景 2:理解全局命名空間與局部命名空間之間的關系 79
場景 4:理解內部函數以及命名空間的 LEGB 規則 80
場景 5:理解 global 關鍵字 81
場景 6:理解 nonlocal 關鍵字 81
場景 7:函數內對象名的生命周期 82
上機實踐 3:理解形式參數 parameter 和實際參數 argument 82
場景 1:通過位置參數為形參賦值 82
場景 2:通過關鍵字參數為形參賦值 83
場景 3:通過默認值參數為形參賦值 83
上機實踐 4:理解 return 語句 84
場景 1:結束函數的執行 84
場景 2:將函數的執行結果返回給調用者 84
上機實踐 5:使用 lambda 表達式創建匿名函數對象 85
上機實踐 6:理解組包和解包 85
場景 1:使用“*”解包元組或字典 85
場景 2:使用“*”組包 86
場景 3:使用“**”解包字典 86
場景 4:元組變長參數 87
場景 5:字典變長參數 87
場景 6:同時使用元組變長參數和字典變長參數 87
場景 7:調用函數時使用“*”或者“**”解包 88
上機實踐 7:參數是可變更對象時的註意事項 88
場景 1:實參是不可變更對象 88
場景 2:實參是可變更對象 89
場景 3:默認值參數是可變更對象 89
第 6 章 控制語句 91
6.1if 語句 91
6.1.1不包含 else 子句的 if 語句 91
6.1.2包含 else 子句的 if 語句 91
6.1.3包含 elif 子句的 if 語句 92
6.2循環語句 92
6.2.1while 循環語句 92
6.2.2for 循環語句 93
6.2.3使用循環語句的建議 93
6.3其他控制語句 93
6.4強行終止程序的執行 94
6.5異常的處理 94
6.5.1常見的內置異常類型 95
6.5.2異常處理程序的完整語法格式 95
6.6控制語句中定義的對象名具有向外穿透性 96
上機實踐 1:if 語句 96
場景 1:準備工作 96
場景 2:不包含 else 子句的 if 語句 97
場景 3:包含 else 子句的 if 語句 97
場景 4:包含 elif 子句的 if 語句 98
上機實踐 2:不包含 else 子句的 while 循環語句 98
場景 1:使用 while 循環語句計算 1 100 的和 98
場景 2:使用 while 循環語句解決生活中的問題 99
上機實踐 3:不包含 else 子句的 for 循環語句 100
場景 1:使用 for 循環語句計算 1 100 的和 100
場景 2:列表推導式 100
場景 3:生成器表達式 101
場景 4:集合推導式 101
場景 5:字典推導式 101
場景 6:使用 for 循環語句解決生活中的問題 102
上機實踐 4:其他控制語句的使用 102
場景 1:認識循環控制語句 break 102
場景 2:使用 break 語句解決生活中的問題 103
場景 3:認識循環控制語句 continue 104
場景 4:認識 pass 語句 104
場景 5:循環語句中的 else 子句 104
上機實踐 5:強行終止程序的執行 105
場景 1:exit()和 quit()的使用 105
場景 2:sys.exit()的使用 105
場景 3:exit()和 sys.exit()的使用區別 106
場景 4:os._exit()的使用 106
場景 5:os._exit()和 sys.exit()的使用區別 106
場景 6:將 exit()替換成 sys.exit() 107
上機實踐 6:異常的處理 107
場景 1:認識 Python 解釋器處理異常的默認行為 107
場景 2:手動拋出異常 107
場景 3:沒有異常處理的程序是不健壯的 107
場景 4:編寫異常處理程序增強程序的健壯性 108
場景 5:異常的處理 1 109
場景 6:異常的處理 2 109
場景 7:捕獲異常並打印異常信息 110
場景 8:使用 next 函數和 StopIteration 異常遍歷迭代器對象 110
第 7 章 自定義模塊和導入語句 112
7.1模塊概述 112
7.1.1自定義模塊 112
7.1.2Python 包的必要性 112
7.2sys.path 的第 1 個元素的兩種取值 113
7.3import 語句的 5 種常見用法 114
7.4模塊的主次之分 114
7.4.1模塊的 name 屬性 114
7.4.2 主模塊 114
7.4.3非主模塊 114
7.4.4模塊名和模塊的 name 屬性值間的關系 115
7.4.5模塊的 name 屬性在測試中的作用 115
7.5主程序存放位置的建議 115
7.6 總結 116
7.6.1import 語句總結 116
7.6.2Python 程序與 Python 模塊間的關系總結 117
上機實踐 1:認識自定義模塊 117
場景 1:準備工作 117
場景 2:認識自定義模塊 117
上機實踐 2: init .py 程序的作用 118
場景 1:Python 包也是模塊 118
場景 2:Python 程序的優先級高於命名空間包 119
場景 3:常規包的優先級高於 Python 程序 119
場景 4: init .py 程序的作用(1) 120
場景 5: init .py 程序的作用(2) 121
上機實踐 3:import 語句的第 3 種用法 122
場景 1:準備工作 122
場景 2:import 語句的第 3 種用法 122
場景 3:import ... as ... 的使用 123
場景 4:import 語句第 3 種用法的註意事項 124
上機實踐 4:import 語句的第 4 種和第 5 種用法 124
場景 1:import 語句的第 4 種用法 124
場景 2:import 語句的第 5 種用法 125
上機實踐 5:Python 程序存在主模塊和非主模塊兩種身份 125
場景 1:準備工作 125
場景 2:Python 程序存在主模塊和非主模塊兩種身份 126
場景 3:理解 sys.path 的第 1 個元素的兩種取值 127
上機實踐 6:模塊的 name 屬性在測試中的作用 127
場景 1:準備工作 127
場景 2:在 Python Shell 上調用自定義函數 128
場景 3:在被測程序中調用自定義函數 128
場景 4:將測試代碼寫在另一個程序中(1) 129
場景 5:將測試代碼寫在另一個程序中(2) 129
場景 6:重溫帶 from 的 import 語句 130
上機實踐 7:主程序建議存放在項目根目錄下 130
第 8 章 項目實戰:學生管理系統的實現(列表和字典篇) 133
8.1元組對象 133
8.2集合對象 133
8.3列表對象 133
8.4字典對象 134
上機實踐 1:元組的應用 134
上機實踐 2:集合的應用 134
場景 1:集合與集合之間的運算(原集合不變) 134
場景 2:以元素為單位更新集合 135
場景 3:以集合為單位更新集合 135
上機實踐 3:列表的應用 136
場景 1:列表對象的常用方法 136
場景 2:採用 MVC 分層思想設計學生管理系統 137
場景 3:使用列表實現學生管理系統 137
上機實踐 4:字典的應用 141
場景 1:字典的 dict()構造方法 141
場景 2:字典常用的方法 141
場景 3:使用字典實現學生管理系統 142
第 9 章 項目實戰:字符串的處理與格式化 146
9.1字符串的處理 146
9.2字符串的格式化 147
上機實踐 1:準備工作 147
上機實踐 2:字符串的處理 148
上機實踐 3:字符串的格式化 149
場景 1:%字符串格式化 149
場景 2:str.format()方法 149
場景 3:str.format_map(mapping)方法 150
場景 4:格式化字符串(f-string) 150
上機實踐 4:字符串的處理(綜合) 151
場景 1:統計段落數 151
場景 2:篩選反義詞 151
場景 3:統計詞頻 151
場景 4:繪制詞雲 152
場景 5:數據清洗 153
第 10 章 為什麽面向對象編程 154
10.1從認知現實世界的角度理解面向對象編程 154
10.1.1人類認知現實世界的過程 154
10.1.2電腦管理現實世界的過程 154
10.2從避免代碼冗餘的角度理解面向對象編程 155
10.2.1結構化編程 155
10.2.2面向對象編程 156
10.2.3理解類和對象之間的關系 157
10.3理解需求的重要性 158
10.4知識匯總 158
10.4.1現實世界 VS 電腦世界知識匯總 158
10.4.2結構化編程 VS 面向對象編程知識匯總 158
第 11 章 面向對象編程基礎知識 161
11.1定義類的語法格式 161
11.2類的定義、模板對象和實例化對象間的關系 161
11.2.1類的定義、模板對象和實例化對象間的關系 161
11.2.2函數和方法的關系 162
11.2.3查看模板對象和實例化對象的內部結構 162
11.2.4訪問模板對象和實例化對象的內部結構 162
11.3構造方法的構成 163
11.3.1 new 方法的語法格式 163
11.3.2 init 方法的語法格式 163
11.4對象的屬性和方法 163
11.4.1實例屬性和實例方法 163
11.4.2類方法和靜態方法 163
11.4.3 類屬性 164
11.5方法的鏈式調用 164
11.6 小結 164
上機實踐 1:類的定義、模板對象和實例化對象間的關系 166
場景 1:準備工作 166
場景 2:類的定義用於創建模板對象 167
場景 3:模板對象用於創建實例化對象 167
場景 4:查看模板對象和實例化對象的內部結構 168
場景 5:類的定義不能決定模板對象的內部結構 170
場景 6:模板對象不能決定實例化對象的內部結構 171
場景 7:屬性的命名空間 171
場景 8:函數和方法的關系 173
上機實踐 2:構造方法、實例屬性和實例方法 173
場景 1: init 方法用於定義實例屬性 173
場景 2:def 語句用於定義實例方法 174
場景 3:理解 new 方法的工作流程 176
上機實踐 3:類方法和靜態方法 177
場景 1:使用“@classmethod”裝飾器定義類方法 177
場景 2:使用“@staticmethod”裝飾器定義靜態方法 179
上機實踐 4:類屬性的應用 181
場景 1:類屬性的應用 181
場景 2:重溫“屬性的命名空間” 182
上機實踐 5:方法的鏈式調用 182
第 12 章 文件管理和路徑管理 184
12.1文件、目錄和路徑 184
12.1.1文件管理概述 184
12.1.2文件的分類 184
12.1.3文本文件的分類 184
12.1.4目錄和路徑 184
12.1.5絕對路徑和相對路徑 185
12.1.6路徑管理概述 186
12.2文件管理 186
12.2.1理解打開文件 186
12.2.2理解讀文件和寫文件 187
12.2.3理解刷新文件 188
12.2.4理解關閉文件 188
12.3文件管理知識匯總 188
12.4使用 pathlib 管理文件路徑 189
上機實踐 1:文件管理和路徑管理基礎知識 189
場景 1:準備工作 189
場景 2:查看 Python Shell 的當前工作目錄 189
場景 3:修改 Python Shell 的當前工作目錄 190
場景 4:查看 Windows 的首選字符編碼 190
上機實踐 2:以“寫”模式打開文本文件 190
場景 1:創建文件和打開文件的二合一操作 190
場景 2:查看文件句柄的狀態信息 191
場景 3:寫文件和 flush 操作 192
場景 4:寫文件和 close 操作 193
場景 5:查看文件句柄的數據類型 194
場景 6:製作一個 Unicode 字符生成器 194
上機實踐 3:以“讀”模式打開文本文件 195
場景 1:通過迭代文件句柄的方法讀文件 195
場景 2:readline 方法只讀取一行 196
場景 3:使用 read 方法讀文件 197
場景 4:readlines 方法以“行”為單位讀取全部內容 197
上機實踐 4:追加模式和排他寫模式 198
場景 1:以追加模式打開文本文件 198
場景 2:以排他寫模式打開文本文件 198
上機實踐 5:關閉文件的正確方法 198
場景 1:錯誤的代碼片段 198
場景 2:不規範的代碼片段 199
場景 3:改進後的代碼仍然不規範 199
場景 4:較為規範的代碼片段 199
場景 5:最為規範的代碼片段 199
場景 6:with 上下文管理的綜合練習 200
上機實踐 6:pathlib 模塊的 Path 類的使用 201
場景 1:認識 pathlib 模塊 201
場景 2:創建 Path 路徑對象和拼接 Path 路徑對象 201
場景 3:Path 路徑對象的屬性和方法 202
場景 4:查看電腦上真實存在的文件路徑 203
場景 5:遍歷路徑 204
場景 6:查看文件(目錄)的基本信息 204
場景 7:創建目錄 205
場景 8:移動文件(或目錄)和重命名文件(或目錄) 205
場景 9:刪除文件和目錄 206
場景 10:創建文件、打開文件、讀寫文件 206
第 13 章 項目實戰:學生管理系統的實現(JSON、CSV 和 pickle 篇) 208
13.1序列化和持久化 208
13.2json 模塊的使用 208
13.2.1JSON 內置的數據類型 209
13.2.2json 模塊的序列化和持久化方法 209
13.2.3內存中的對象和 JSON 文本數據相互轉換 210
13.3csv 模塊的使用 210
13.3.1列表對象 CSV 文本文件 211
13.3.2字典對象 CSV 文本文件 212
13.4pickle 模塊的使用 213
13.5 總結 213
上機實踐 1:json 模塊的使用 213
場景 1:準備工作 213
場景 2:認識 json 模塊 213
場景 3:JSON 字符串反序列化為內存中的對象 214
場景 4:內存中的對象序列化為 JSON 字符串 215
場景 5:內存中的對象持久化到 JSON 文本文件 215
場景 6:JSON 文本文件反持久化為 Python 對象 216
場景 7:使用 JSON 文本文件和列表實現學生管理系統 217
場景 8:使用 JSON 文本文件和字典實現學生管理系統 220
上機實踐 2:csv 模塊的使用 223
場景 1:認識 csv 模塊 223
場景 2:使用 csv.writer 持久化列表對象到 CSV 文本文件 225
場景 3:使用 csv.reader 遍歷 CSV 文本文件 226
場景 4:使用 csv.DictWriter 持久化字典對象到 CSV 文本文件 226
場景 5:使用 csv.DictReader 遍歷 CSV 文本文件 227
場景 6:使用 CSV 文本文件和列表實現學生管理系統 227
場景 7:使用 CSV 文本文件和字典實現學生管理系統 230
上機實踐 3:pickle 模塊的使用 234
場景 1:認識 pickle 模塊 234
場景 2:使用 pickle 實現對象的序列化和反序列化 234
場景 3:使用 pickle 模塊實現對象的持久化和反持久化 235
場景 4:使用 pickle 二進制文件和列表實現學生管理系統 236
場景 5:使用 pickle 二進制文件和字典實現學生管理系統 237
第 14 章 項目實戰:學生管理系統的實現(Web 篇) 238
14.1Web 開發概述 238
14.2Bottle 概述 238
14.3初識 FORM 表單 239
14.3.1表單標簽 239
14.3.2表單控件 239
14.3.3表單按鈕 240
上機實踐 1:初識 Bottle 和認識 GET 請求 241
場景 1:準備工作 241
場景 2:快速上手 Bottle 241
場景 3:認識 GET 請求 243
場景 4:獲取 GET 請求中的請求參數 244
上機實踐 2:認識 POST 請求 244
場景 1:發送 GET 請求的 FORM 表單 245
場景 2:發送 POST 請求的 FORM 表單 246
場景 3:獲取 POST 請求 FORM 表單中的請求參數 247
上機實踐 3:Bottle 內置模板引擎的使用 247
場景 1:初識 SimpleTemplate 模板引擎 247
場景 2:在模板文件中處理 Python 對象 248
場景 3:認識 table 表格標簽 250
上機實踐 4:學生管理系統的實現(Web 篇) 250
場景 1:準備工作 251
場景 2:student_route.py 程序的實現 251
場景 3:index.txt 首頁的實現 253
場景 4:edit.txt 學生編輯頁面的實現 254
場景 5:主程序 main.py 的實現 255
場景 6:測試 255
第 15 章 項目實戰:學生管理系統的實現(數據庫篇) 257
15.1SQLite 概述 257
15.2數據庫和數據庫表 257
15.3SQLite 數據類型 257
15.4創建數據庫表結構 258
15.5表記錄的操作 258
上機實踐 1:使用 sqlite3 模塊操作 SQLite 數據庫 259
場景 1:準備工作 259
場景 2:創建並連接數據庫 259
場景 3:獲取游標對象 260
場景 4:創建數據庫表 260
場景 5:提交事務(commit) 261
場景 6:釋放資源 261
場景 7:向數據庫表添加記錄 261
場景 8:回滾事務(rollback) 262
場景 9:表記錄的檢索(檢索所有記錄) 263
場景 10:表記錄的檢索(帶有 where 語句) 263
場景 11:修改數據庫表的記錄 264
場景 12:刪除數據庫表的記錄 264
場景 13:認識 SQL 語句的“?”占位符 264
上機實踐 2:基於 Web 學生管理系統的實現(數據庫篇) 265
第 16 章 拓展知識 269
16.1認識字符和字符編碼 269
16.1.1十進制數和二進制數 269
16.1.2ASCII 編碼表和 ASCII 字符集 269
16.1.3十六進制數 270
16.1.4字符編碼表 270
16.1.5 字符集 270
16.1.6Unicode 編碼表 271
16.1.7實現 Unicode 編碼表的字符集 271
16.1.8UTF-8 流行的原因 272
16.1.9Python 字符串棄用 UTF-8 的原因 272
16.1.10理解字符編碼和字符解碼 273
上機實踐 1:通過文本文件認識字符和字符編碼 273
上機實踐 2:通過 Python 代碼認識字符和字符編碼 277
16.2使用 IDLE 開發 Python 程序 281
上機實踐 3:使用 IDLE 開發 Python 程序 282
16.3可迭代對象和迭代器對象 284
上機實踐 4:可迭代對象和迭代器對象 284
16.4生成器函數和生成器對象 288
上機實踐 5:生成器函數和生成器對象 289
16.5pip 包管理工具的使用 290
上機實踐 6:pip 包管理工具的使用 291
16.6Python 中的標點符號 293
16.7os 模塊和 pathlib 模塊的對比 295