第1 章 Python,那些不得不知道的兒 ...................................1
1.1 編程語言的發(fā)展 ....................................... 2
1.2 Python 的起源 ........................................... 3
1.3 你問我答了解Python ............................... 3
1.3.1 編程語言那么多,為什么選擇Python .......................... 3
1.3.2 Python 解釋器的發(fā)行版本 .............. 5
1.3.3 Python 的應用 .................................. 6
1.3.4 正視Python 的不足 ......................... 6
1.3.5 如何學好Python .............................. 6
1.4 Python 解釋器的下載安裝 ....................... 7
1.4.1 Python for Windows ......................... 7
1.4.2 Python for Linux ............................. 12
1.4.3 Python for Mac OS ......................... 18
1.4.4 讓人愛不釋手的pip....................... 20
1.5 工欲善其事,必先利其器--Python IDE 的選擇與安裝 ..................... 21
1.5.1 PyCharm 的下載與安裝 ................. 22
1.5.2 PyCharm 的使用 ............................ 27
1.6 習題 ......................................................... 28
第2 章 Python 基礎 ......................... 29
2.1 hello world ................................................ 30
2.1.1 文本式編程 .................................... 30
2.1.2 命令行交互式編程 ......................... 31
2.2 PEP8 代碼風格指南 ............................... 32
2.2.1 注釋 ................................................ 32
2.2.2 縮進 ................................................ 33
2.2.3 單引號與雙引號 ............................. 33
2.2.4 邏輯行與物理行 ............................. 33
2.3 變量與內存管理 ..................................... 34
2.3.1 變量賦值 ........................................ 34
2.3.2 內存管理 ......................................... 36
2.4 print and input ......................................... 38
2.5 運算符與表達式 ..................................... 39
2.5.1 算數運算符 ..................................... 40
2.5.2 比較運算符 ..................................... 40
2.5.3 賦值運算符 ..................................... 41
2.5.4 邏輯運算符 ..................................... 42
2.5.5 成員運算符 ..................................... 43
2.5.6 身份運算符 ..................................... 43
2.5.7 位運算符 ......................................... 44
2.5.8 運算符的優(yōu)先級 ............................. 44
2.6 流程控制語句 ......................................... 45
2.6.1 條件語句 ......................................... 46
2.6.2 循環(huán)之while 循環(huán) .......................... 49
2.6.3 循環(huán)之for 循環(huán) ............................... 50
2.6.4 break 語句 ....................................... 51
2.6.5 continue 語句 .................................. 51
2.6.6 pass 語句 ......................................... 52
2.7 習題 ......................................................... 52
第3 章 數據類型 ................................... 54
3.1 Python 基礎數據類型 ............................. 55
3.1.1 整型 ................................................. 55
3.1.2 浮點型 ............................................. 56
3.1.3 布爾型 ............................................. 58
3.1.4 復數 ................................................. 62
3.2 字符串 ..................................................... 62
3.2.1 字符串的創(chuàng)建 ................................. 63
3.2.2 常用字符串方法 ............................. 64
3.2.3 字符串類型與類型的轉換 ............. 75
3.2.4 最后,善用help ............................. 76
3.3 容易走火入魔的字符編碼 .................... 77
3.3.1 字符編碼的發(fā)展 ............................. 77
3.3.2 字符編碼之Python ......................... 79
3.4 列表 ......................................................... 82
3.4.1 列表的基本操作 ............................. 83
3.4.2 列表的常用方法 ............................. 86
3.4.3 列表的嵌套 .................................... 90
3.5 元組 ......................................................... 91
3.5.1 元組的基本操作 ............................. 91
3.5.2 元組的嵌套 .................................... 95
3.6 字典 ......................................................... 97
3.6.1 字典的基本操作 ............................. 98
3.6.2 字典的其他操作 ........................... 100
3.6.3 字典的嵌套 .................................. 107
3.7 集合 ....................................................... 108
3.7.1 集合的常用操作和方法 ............... 108
3.7.2 集合的運算 .................................. 110
3.7.3 集合的嵌套 .................................. 114
3.8 推導式、三元表達式與深、
淺拷貝 .................................................. 115
3.8.1 一行代碼解決的事情 ................... 115
3.8.2 三元表達式 .................................. 117
3.8.3 深、淺拷貝那些事 ....................... 117
3.9 習題 ....................................................... 120
第4 章 函數 ............................................ 123
4.1 函數基礎 ............................................... 124
4.1.1 函數的定義與調用 ....................... 124
4.1.2 函數的返回值 ............................... 126
4.1.3 函數的參數 .................................. 127
4.1.4 函數對象 ...................................... 131
4.1.5 命名空間與作用域 ....................... 133
4.1.6 嵌套函數與嵌套作用域 ............... 136
4.1.7 閉包函數 ...................................... 140
4.2 裝飾器 ................................................... 142
4.2.1 開放封閉原則 ............................... 144
4.2.2 無參裝飾器 .................................. 145
4.2.3 有參裝飾器 .................................. 146
4.2.4 多裝飾器 ...................................... 149
4.3 迭代器 ................................................... 153
4.3.1 一個Shift 鍵引發(fā)的“血案” ..... 153
4.3.2 迭代器協(xié)議版本差異 ................... 157
4.3.3 for 循環(huán)的本質 .............................. 160
4.4 生成器 ................................................... 161
4.4.1 生成器函數 ................................... 161
4.4.2 生成器表達式VS列表解析式................................... 163
4.5 遞歸與面向過程編程 .......................... 164
4.5.1 遞歸 ............................................... 164
4.5.2 面向過程編程 ............................... 166
4.6 內置函數 ............................................... 168
4.6.1 讓人又愛又恨的lambda ............... 168
4.6.2 映射函數:map ............................ 170
4.6.3 拉鏈函數:zip .............................. 171
4.6.4 過濾函數:filter ............................ 173
4.6.5 累積函數:reduce ......................... 174
4.6.6 偏函數:partial ............................. 175
4.6.7 其他內置函數 ............................... 177
4.7 文件操作 ............................................... 183
4.7.1 打開文件 ....................................... 183
4.7.2 文件常用方法 ............................... 184
4.7.3 手動擋關閉文件 ........................... 186
4.7.4 自動擋關閉文件 ........................... 186
4.7.5 f 是什么 ......................................... 187
4.8 習題 ....................................................... 188
第5 章 模塊 ............................................ 190
5.1 初識模塊 ............................................... 191
5.2 常用模塊 ............................................... 191
5.2.1 time ................................................ 191
5.2.2 collections ...................................... 197
5.2.3 functools ........................................ 204
5.2.4 random ........................................... 207
5.2.5 序列化模塊 ................................... 208
5.2.6 re .................................................... 213
5.2.7 os .................................................... 216
5.3 模塊探索 ............................................... 221
5.4 模塊與包 ............................................... 231
5.5 習題 ....................................................... 235
第6 章 面向對象 ................................. 237
楔子:少年,你對蓋倫一無所知?。?38
6.1 類與對象 ............................................... 240
6.1.1 類的創(chuàng)建 ...................................... 240
6.1.2 實例化 .......................................... 241
6.2 繼承 ....................................................... 246
6.2.1 命名空間 ...................................... 246
6.2.2 單繼承 .......................................... 248
6.2.3 多繼承 .......................................... 253
6.2.4 接口類 .......................................... 254
6.2.5 抽象類 .......................................... 257
6.2.6 新式類與經典類 ........................... 258
6.2.7 C3 算法 ......................................... 260
6.2.8 issubclass 和isinstance ................. 268
6.3 組合 ..................................................... 269
6.4 封裝 ..................................................... 270
6.5 多態(tài) ..................................................... 274
6.6 裝飾器函數 ......................................... 277
6.6.1 @property ..................................... 277
6.6.2 @classmethod ............................... 281
6.6.3 @staticmethod .............................. 282
6.7 反射 ..................................................... 283
6.7.1 什么是反射 .................................. 283
6.7.2 反射的應用 .................................. 286
6.8 函數VS 方法 ...................................... 289
6.9 類中的內置方法 ................................. 290
6.9.1 對象的“誕生”與“死亡” ........................................ 290
6.9.2 __len__ .......................................... 293
6.9.3 __eq__ ........................................... 293
6.9.4 字符串格式化三劍客 ................... 294
6.9.5 item 系列 ...................................... 298
6.9.6 __call__ ......................................... 301
6.9.7 __hash__ ....................................... 301
6.10 習題 ................................................... 302
第7 章 學以致用--學生選課系統(tǒng) ..... 303
7.1 功能概述 .............................................. 304
7.2 需求分析 .............................................. 304
7.2.1 角色設計 ....................................... 304
7.2.2 功能設計 ....................................... 304
7.2.3 流程設計 ....................................... 304
7.2.4 程序設計 ....................................... 305
7.2.5 流程圖 ........................................... 306
7.2.6 數據庫設計 ................................... 306
7.3 搭建框架 .............................................. 306
7.3.1 根據角色信息創(chuàng)建類 ................... 307
7.3.2 完善角色信息 ............................... 307
7.3.3 設計程序的入口 ........................... 308
7.3.4 實現入口函數最重要的功能 ....... 311
7.3.5 優(yōu)化框架 ....................................... 314
7.4 細節(jié)實現 .............................................. 321
7.4.1 管理員之創(chuàng)建課程信息 ............... 321
7.4.2 管理員之查看課程信息 ............... 322
7.4.3 管理員之創(chuàng)建學生信息 ............... 324
7.4.4 管理員之查看學生信息 ............... 327
7.4.5 管理員之退出程序 ....................... 328
7.4.6 問題:“你,還是你嗎?” ....... 329
7.4.7 學生之查看可選課程 ................... 334
7.4.8 學生之選擇課程 ........................... 335
7.4.9 學生之查看可選課程 ................... 338
7.4.10 管理員之查看學生選課信息 ..... 339
7.4.11 學生之退出 ................................. 341
7.5 系統(tǒng)優(yōu)化 .............................................. 342
7.5.1 查看課程信息功能優(yōu)化 ............... 346
7.5.2 退出功能優(yōu)化 ............................... 348
7.5.3 文件路徑的優(yōu)化 ........................... 348
7.5.4 文件操作優(yōu)化 ............................... 349
7.5.5 交互體驗的優(yōu)化 ........................... 350
7.5.6 優(yōu)化后的代碼示例 ....................... 352
7.6 總結 ............