Python 編程從入門到提高
劉臣
買這商品的人也買了...
-
$454Flutter 技術入門與實戰, 2/e
-
$354$336 -
$359$341 -
$352分佈式實時系統數據分發服務
-
$474$450 -
$252$239 -
$254單片機控制技術 -- 基於 Arduinoping 台的項目式教程
-
$199Flutter 開發入門與實踐
-
$505自主移動機器人與多機器人系統:運動規劃、通信和集群
-
$301群智感知計算
-
$229測試技術模擬與實踐
-
$354$336 -
$534$507 -
$403數據中心數字孿生應用實踐
-
$359$341 -
$509Python 工匠 案例、技巧與工程實踐
-
$454Koa 開發:入門、進階與實戰
-
$403虛擬偶像 AI 實現
-
$636$604 -
$648$616 -
$539$512 -
$403虛擬現實與增強現實技術
-
$250IT項目經理進階之道
-
$834$792 -
$500$395
相關主題
商品描述
本書主要內容分為 Python 編程入門和提高兩個組成部分。入門部分介紹 Python 語言的基礎知識, 包括環境搭建、代碼運行方式、基本語法、常用數據結構、函數編程以及面向對象編程等。提高部分介 紹重要的 Python 中高級編程知識和技術,包括高級函數編程和麵向對象編程知識,例如函數對象、裝 飾器、閉包、類的定製、多重繼承與混入、元編程等,以及性能優化技術、混合編程、並發與異步編程。 另外,本書還涵蓋了數據分析與 Web 開發兩大 Python 應用領域的基礎知識。在數據分析方面,介紹了 NumPy、SciPy、Pandas、Matplotlib、Scikit-learn 等常用工具包的基本使用方法和實例。在 Web 開發方 面,介紹了 HTTP 等 Web 開發基礎知識,以及 WebSocket 協議、WSGI 應用和 ASGI 應用的原理,並最 終使讀者能夠實現自己的 Web 編程框架。 本書可以作為電腦應用、人工智能、信息管理與信息系統等相關專業本科生編程基礎課程的教材 或參考書,也可以供 Python 學習者、Web 開發人員和數據分析研究人員參考。
作者簡介
劉臣,上海理工大學副教授,2010年畢業於哈爾濱工業大學獲博士學位。有多年的Python研究、開發與教學經驗。從事數據挖掘、機器學習、深度學習等領域的研究,主要教授Python程序設計、機器學習、自然語言處理等課程。曾主持國家自然科學基金、教育部人文社科基金等科研項目,目前的研究興趣是Web用戶行為挖掘。
目錄大綱
1章 Python 概述 1
1.1 Python 語言 1
1.1.1 Python 語言的發展 1
1.1.2 Python 語言的特點 2
1.1.3 Python 的主要應用領域 3
1.2 Python 運行環境 3
1.2.1 Python 的不同實現和發行版 4
1.2.2 Python 環境的安裝 4
1.3 Python 程序的運行 8
1.3.1 交互模式 8
1.3.2 腳本模式 9
1.4 常用開發工具 10
1.5 Python 虛擬環境 12
1.5.1 什麼是虛擬環境 12
1.5.2 虛擬環境的創建和使用 12
1.6 小結 13
1.7 思考與練習 14
2章 Python 編程基礎 15
2.1 變量與表達式 15
2.1.1 變量的定義與賦值 15
2.1.2 算術表達式 16
2.1.3 關係表達式與邏輯表達式 17
2.1.4 海象運算符 18
2.1.5 運算符的優先級 19
2.2 語句 19
2.2.1 簡單語句 19
2.2.2 複合語句與空語句 20
2.2.3 註釋 21
2.3 數據類型 21
2.3.1 基本數據類型 22
2.3.2 空類型 25
2.3.3 擴展數據類型 26
2.4 流程控制 27
2.4.1 結構化程序設計 27
2.4.2 選擇 27
2.4.3 循環 29
2.5 模塊和包 31
2.5.1 模塊和包的導入 31
2.5.2 自定義包 32
2.5.3 常用內置模塊 33
2.6 Python 編程規範 34
2.6.1 規範編碼的重要性 34
2.6.2 PEP8 規範 34
2.7 小結 35
2.8 思考與練習 36
3章 常用數據結構 37
3.1 序列 37
3.1.1 序列的種類 37
3.1.2 序列的基本作 38
3.2 列表 41
3.2.1 列表的定義 41
3.2.2 列表元素的作 41
3.2.3 列表推導式 44
3.2.4 棧 46
3.3 元組 46
3.3.1 定義和使用 46
3.3.2 元組的不可變陷阱 47
3.3.3 生成器推導式 47
3.4 集合 48
3.4.1 集合的定義 48
3.4.2 常用集合作方法 49
3.4.3 集合推導式 50
3.4.4 排列組合 50
3.5 字典 51
3.5.1 字典的定義 51
3.5.2 字典常用作方法 52
3.5.3 字典推導式 53
3.6 字符串 53
3.6.1 字符串的定義 54
3.6.2 常用字符串處理方法 54
3.6.3 字符串格式化 56
3.7 二進制序列 59
3.7.1 字節串的原理 59
3.7.2 字節串的應用 60
3.8 高級數據結構 60
3.8.1 collection 模塊 60
3.8.2 array.array 62
3.8.3 其他有用的數據結構 63
3.9 小結 63
3.10 思考與練習 63
4章 函數與函數編程 64
4.1 函數的定義與調用 64
4.1.1 函數的定義 64
4.1.2 函數的調用 66
4.1.3 變量的作用域 67
4.2 函數的參數 69
4.2.1 位置參數與關鍵字參數 69
4.2.2 可選參數 71
4.2.3 可變參數 71
4.2.4 參數分配 72
4.3 函數的類型註解 73
4.3.1 類型註解 73
4.3.2 typing 模塊 74
4.3.3 類型註解的使用 76
4.4 函數對象 76
4.4.1 一等對象 76
4.4.2 Python 函數的面向對象特徵 77
4.4.3 Python 函數的一等對象特徵 78
4.5 嵌套函數與閉包 80
4.5.1 嵌套函數 80
4.5.2 閉包 81
4.6 函數裝飾器 84
4.6.1 簡單函數裝飾器 84
4.6.2 函數裝飾器的工作原理 85
4.6.3 函數裝飾器的優化 87
4.6.4 裝飾器的疊加 90
4.6.5 含參裝飾器 92
4.6.6 函數裝飾器應用實例 94
4.6.7 重要的 Python 內置裝飾器 95
4.7 常用函數編程工具 97
4.7.1 常用工具函數 97
4.7.2 operator 模塊 98
4.7.3 itertools 模塊 98
4.8 小結 99
4.9 思考與練習 99
5章 面向對象編程基礎 100
5.1 面向對象的概念與特徵 100
5.1.1 面向對象的概念 100
5.1.2 類與對象 101
5.1.3 封裝性 102
5.1.4 繼承性 103
5.1.5 多態性 103
5.2 類的定義與實例化 104
5.2.1 類的定義 104
5.2.2 類的實例化 105
5.2.3 成員的隱藏 108
5.2.4 類命名空間 109
5.3 進一步了解屬性 110
5.3.1 類屬性與實例屬性 110
5.3.2 property 裝飾器 111
5.4 進一步了解方法 113
5.4.1 實例方法、類方法與靜態方法 113
5.4.2 方法重載 115
5.5 類的繼承 116
5.5.1 派生類的定義 116
5.5.2 方法重寫 117
5.5.3 多重繼承 119
5.5.4 對象、類的關係 120
5.5.5 調用基類方法 122
5.6 混入 124
5.6.1 混入的概念 124
5.6.2 Python 中的混入 126
5.7 小結 130
5.8 思考與練習 130
6章 面向對象編程進階 131
6.1 類的定制 131
6.1.1 常用特殊屬性 131
6.1.2 對象運算 134
6.1.3 對象描述 136
6.1.4 對象成員訪問控制 137
6.1.5 描述器 139
6.1.6 可調用對象 140
6.1.7 容器 141
6.1.8 迭代器與可迭代對象 142
6.2 生成器 144
6.2.1 生成器的創建 144
6.2.2 生成器與迭代器 146
6.3 類裝飾器 147
6.3.1 修飾方法的裝飾器 147
6.3.2 修飾類的裝飾器 148
6.3.3 基於類的裝飾器 150
6.4 抽象基類 153
6.4.1 抽象基類的概念 153
6.4.2 抽象基類的使用 154
6.4.3 常用內置抽象基類 157
6.4.4 自定義抽象基類 158
6.5 元類 158
6.5.1 Python 類的特徵 158
6.5.2 元類的定義與使用 160
6.5.3 元類的應用實例 161
6.6 對象序列化 163
6.6.1 pickle 164
6.6.2 copyreg 166
6.6.3 shelve 168
6.7 小結 169
6.8 思考與練習 169
7章 調試與測試 170
7.1 調試方法 170
7.1.1 利用 print 調試程序 170
7.1.2 利用 logging 調試程序 171
7.1.3 pdb 調試器 173
7.2 異常處理 175
7.2.1 異常的原因 175
7.2.2 斷言 176
7.2.3 異常處理 177
7.2.4 異常的類型 180
7.3 單元測試 182
7.3.1 單元測試的概念及工具 182
7.3.2 unittest 基礎 183
7.3.3 創建測試用例 184
7.3.4 運行測試用例 185
7.3.5 測試套件的創建與執行 186
7.3.6 測試設施 187
7.4 文檔測試 188
7.4.1 文檔測試用例 188
7.4.2 運行文檔測試 188
7.5 小結 189
7.6 思考與練習 189
8章 數據處理與分析基礎 190
8.1 文件讀寫 190
8.1.1 文件的打開和關閉 190
8.1.2 路徑管理 191
8.1.3 文本文件讀寫 193
8.1.4 二進製文件讀寫 194
8.2 上下文管理 195
8.2.1 with 語句塊 195
8.2.2 上下文管理協議 196
8.3 數據庫編程 198
8.3.1 數據庫應用編程接口 198
8.3.2 嵌入式數據庫編程 200
8.4 正則表達式 202
8.4.1 正則表達式匹配規則 202
8.4.2 正則表達式的應用 205
8.4.3 正則表達式的編譯 206
8.5 數據分析中的數據結構 207
8.5.1 NumPy 207
8.5.2 SciPy 211
8.6 數據可視化 214
8.6.1 簡單繪圖 214
8.6.2 圖像的配置與修飾 215
8.6.3 多子圖圖像的繪製 218
8.6.4 三維圖像的繪製 219
8.7 Pandas 基礎 220
8.7.1 數據結構 221
8.7.2 數據訪問 223
8.7.3 統計分析 225
8.8 Scikit-learn 基礎 226
8.8.1 Scikit-learn 簡介 226
8.8.2 分類問題 227
8.8.3 聚類問題 229
8.9 小結 230
8.10 思考與練習 230
9章 性能優化技術 232
9.1 程序性能分析 232
9.1.1 time 與 timeit 232
9.1.2 profile 235
9.2 即時編譯技術 237
9.2.1 即時編譯的概念 237
9.2.2 PyPy 238
9.2.3 Numba 239
9.3 混合編程概念及環境搭建 242
9.4 利用 ctypes 實現混合編程 243
9.4.1 C 函數庫的調用 243
9.4.2 C++ 類的包裝 247
9.5 利用 C API 構建 Python 擴展 249
9.5.1 構建 Python 擴展的步驟 249
9.5.2 擴展函數 249
9.5.3 模塊配置與初始化 252
9.5.4 擴展的構建與安裝 252
9.5.5 實例 252
9.6 項目打包與發布 257
9.6.1 打包與發布的流程 257
9.6.2 項目打包與發布示例 259
9.7 小結 261
9.8 思考與練習 261
10章 網絡編程與並發處理 262
10.1 網絡套接字的概念 262
10.1.1 套接字的類型 262
10.1.2 基於套接字的網絡通信過程 263
10.2套接字編程 264
10.2.1 socket 模塊 264
10.2.2 面向連接的套接字編程 266
10.2.3 面向無連接的套接字編程 267
10.2.4 並發問題 268
10.3 多進程編程 269
10.3.1 進程的創建與運行 269
10.3.2 利用多進程處理網絡並發 271
10.3.3 利用進程池處理網絡並發 272
10.4 多線程編程 274
10.4.1 線程的概念與特點 274
10.4.2 網絡並發處理的多線程方法 275
10.5 異步編程 275
10.5.1 異步編程概念 275
10.5.2 基於生成器的協程 276
10.5.3 協程 280
10.5.4 Python 異步編程基礎 281
10.5.5 利用異步編程處理網絡並發 282
10.6 套接字服務器 285
10.6.1 socketserver 模塊簡介 285
10.6.2 利用套接字服務器處理網絡並發 286
10.7 小結 286
10.8 思考與練習 287
11章 Web 的概念與原理 288
11.1 Web 概念與開發技術 288
11.1.1 Web 的概念 288
11.1.2 Web 頁面的訪問過程 290
11.1.3 Web 開發技術棧 290
11.2 統一資源標識符 291
11.2.1 統一資源定位符 292
11.2.2 URL 的解析 292
11.3 文本標記語言 293
11.3.1 HTML 文檔的結構 293
11.3.2 HTML 文檔的修飾與控制 295
11.4 文本傳輸協議 297
11.4.1 HTTP 請求 298
11.4.2 HTTP 響應 300
11.4.3 HTTP 協議解析 302
11.5 Web 服務器的工作原理 305
11.5.1 基於套接字的 Web 服務器端