Python作為一種解釋型的編程語言,具有簡單、優(yōu)雅的設計風格和功能強大的擴展庫,非常適合海量數(shù)據的處理,已成為各行業(yè)大數(shù)據技術革新的基礎性工具。本書系統(tǒng)講解Python的基礎知識和程序設計方法,全書共15章。第1~8章為基礎篇,介紹程序設計的基本控制結構,以列表、元組、字典、集合為代表的各類數(shù)據結構,函數(shù)、字符串與正則表達式的使用方法,面向對象方法、文件及異常處理等基礎知識;第9~15章為進階篇,介紹類的成員訪問方法、迭代器與生成器,采用wxPython的GUI編程方法及NumPy、SciPy、Matplotlib、Pandas的科學計算與可視化方法,同時采用進程、線程、協(xié)程實現(xiàn)并發(fā)處理,利用DBAPI、ORM對象關系映射實現(xiàn)數(shù)據庫編程。此外,網絡程序設計部分主要介紹網絡爬蟲、Web應用開發(fā),大數(shù)據處理部分介紹函數(shù)式編程與MapReduce模型。
本書涵蓋Python程序設計的基本原理、基礎知識并提供豐富的程序設計案例,信息量大、知識點緊湊、實用性強。全書的編寫圍繞大數(shù)據的時代特征,緊扣Python編程理論和技術發(fā)展趨勢,可作為高等院校各專業(yè)的Python語言教材,也可作為Python應用開發(fā)人員及編程愛好者的參考資料。
Python是一門擁有簡潔語法和高效信息處理能力的解釋型高級編程語言,采取免費、開源的方式進行維護和管理,除擁有大量功能強大的內置對象、標準庫、擴展庫之外,還允許各行各業(yè)的科技人員結合本領域的需要進行專門的設計和擴充,從而極大地提高了Python語言本身的活力和適用范圍。對于大數(shù)據系統(tǒng)這樣涵蓋內容豐富、數(shù)據容量巨大又需要廣泛算法支撐的業(yè)務和應用系統(tǒng),Python語言的使用具有得天獨厚的優(yōu)勢,可以方便地進行編程并使用其各類相關的功能模塊,提高數(shù)據分析處理的能力。
Python語言的設置充分融入了現(xiàn)代高級編程語言的精髓,可以通過簡單的語句實現(xiàn)以往需要編寫大量代碼才能夠實現(xiàn)的功能。對于常用的數(shù)據結構、函數(shù)、字符串和正則表達式、面向對象方法、文件操作以及異常處理等基礎性程序設計方法和用法均支持。本書側重于從基礎性原理和方法出發(fā),循序漸進、由淺入深地引導學習者進行Python語言知識與編程方法的學習,并在學習基本編程方法的基礎之上,進一步學習類的成員訪問方法、迭代器和生成器等知識,進而學習GUI編程方法、科學計算與可視化方法、并發(fā)編程的相關知識與原理、數(shù)據庫編程、網絡程序設計以及大數(shù)據處理方法。
·本書的內容組織
本書共15章,分基礎篇和進階篇兩個部分。第1~8章為基礎篇,主要內容包括Python語言概述,程序設計基礎,序列結構,函數(shù),字符串與正則表達式,面向對象程序設計,文件操作,異常處理與程序調試;第9~15章為進階篇,主要內容包括成員訪問、迭代器與生成器,GUI編程,科學計算與可視化,并發(fā)編程,數(shù)據庫編程,網絡程序設計,大數(shù)據處理。
本書主要有以下幾個特點:
(1) 涵蓋Python程序設計的基本原理、基礎知識并提供豐富的程序設計案例,信息量大、知識點緊湊、實用性強。
(2) 圍繞大數(shù)據的時代特征,緊扣Python編程理論和技術發(fā)展趨勢,對知識脈絡的設計符合國際國內對高質量Python程序設計人員的需要。
(3) 注重對核心技術及基礎性原理與方法的講解,讓學習者能夠舉一反三,深入了解現(xiàn)代程序設計的精髓與先進理念,更有利于對實際問題的領會和解決。
(4) 本書給出了豐富的案例和練習實例,有利于學習者對知識的理解和深入領會,能夠輔助學習者掌握關鍵知識點。
·本書的讀者對象
本書適用于相關專業(yè)的本科生或研究生,供各類大專院校和職業(yè)技術學院作為教材或教學參考書使用,也可作為相關培訓課程的教學資料;本書也可供相關軟件開發(fā)及科技人員作為輔助學習資料與工作參考材料使用,對有興趣學習Python編程技術的人員或各類相關程序設計競賽參賽人員也具有一定的參考價值。
采用本書作為教材時,學時安排參考如下:
(1) 本書作為計算機、數(shù)據工程、信息技術、電子、自動化、人工智能、大數(shù)據等相關專業(yè)本科或研究生的程序設計教材時,建議采用64或72學時,講授本書的全部章節(jié),也可結合專業(yè)特點及學時安排,選取第1~9章作為必講章節(jié),第10~15章作為選講章節(jié)。
(2) 本書作為會計、經濟、金融、管理、統(tǒng)計以及其他非工科專業(yè)的研究生或本科生教材時,建議采用64學時,選取第1~9章作為必講章節(jié),第10~15章作為選講章節(jié)。
(3) 作為非計算機相關專業(yè)的本科生公共基礎課程序設計教材時,建議采用48或64學時,選取第1~8章作為必講章節(jié),第9~15章作為選講章節(jié)。
(4) 作為?圃盒;蚵殬I(yè)技術學院程序設計教材時,建議采用64或96學時,可結合專業(yè)特點及學時安排講授本書的全部章節(jié),或選取第1~8章作為必講章節(jié),第9~15章作為選講章節(jié)。
(5) 作為Python培訓用書時,建議培訓時間為7~12天,可結合培訓學時安排講授本書的全部章節(jié),或選取第1~8章作為必講章節(jié),第9~15章作為選講章節(jié)。
·本書的配套資源
本書配備多媒體教學資料,相關例題和一些必要資料可以直接通過書中二維碼掃碼查詢。為方便教學,本書提供全套教學課件、全書例題的源代碼、參考教學大綱、學時分配表以及試題樣卷等資料,可向西安電子科技大學出版社索取,或在其官網(http://www.xduph.com)自行查詢。本書也開放了課后習題的參考答案,有需要的老師請直接聯(lián)系西安電子科技大學出版社獲取。
本書被認定為高等學校新工科應用型人才培養(yǎng)“十三五”規(guī)劃教材和浙江省普通高等學校新形態(tài)教材,出版過程中得到了寧波工程學院、浙江大學等院校師生和西安電子科技大學出版社、浙江大學出版社的鼎力支持和幫助,在此表示衷心的感謝。由于編者水平有限,書中難免有錯漏之處,懇請廣大讀者不吝指出并提出寶貴意見,我們將在今后再版時修訂完善。
第一部分 基 礎 篇
第1章 Python語言概述 2
1.1 大數(shù)據的時代特征 2
1.2 Python語言的發(fā)展 3
1.2.1 版本更迭 3
1.2.2 軟件實現(xiàn) 4
1.3 Python開發(fā)環(huán)境配置 5
1.3.1 Python的安裝和運行 5
1.3.2 Anaconda包管理器的使用 7
1.4 初識Python開發(fā) 9
1.4.1 算術運算符 9
1.4.2 數(shù)字類型 9
1.4.3 變量的創(chuàng)建與刪除 11
1.4.4 第一個程序 12
本章小結 13
習題 13
第2章 程序設計基礎 15
2.1 基本運算 15
2.1.1 數(shù)字計算 15
2.1.2 字符串規(guī)則 16
2.1.3 布爾運算 17
2.2 基本語句 18
2.2.1 標識符與關鍵字 18
2.2.2 變量 19
2.2.3 表達式和語句 20
2.2.4 輸入與輸出 21
2.2.5 賦值語句 24
2.3 選擇結構 25
2.3.1 單分支選擇結構 26
2.3.2 雙分支選擇結構 26
2.3.3 多分支選擇結構 27
2.3.4 選擇結構應用 28
2.4 循環(huán)結構 29
2.4.1 while循環(huán) 29
2.4.2 for循環(huán) 30
2.4.3 break和continue語句 30
本章小結 31
習題 31
第3章 序列結構 33
3.1 列表 33
3.1.1 創(chuàng)建列表 33
3.1.2 列表元素操作 34
3.2 元組 37
3.2.1 元組的創(chuàng)建與刪除 37
3.2.2 元組與列表的區(qū)別 37
3.3 字典 38
3.3.1 創(chuàng)建字典 38
3.3.2 字典元素操作 39
3.4 集合 40
3.4.1 創(chuàng)建集合 40
3.4.2 集合運算 41
3.5 序列運算 43
3.5.1 序列解包 43
3.5.2 元素訪問與成員判定 47
3.5.3 序列切片 49
3.5.4 序列排序 50
3.5.5 序列的基本運算 51
3.6 其他序列類型 52
3.6.1 具名元組 52
3.6.2 雙向隊列 53
本章小結 53
習題 54
第4章 函數(shù) 55
4.1 函數(shù)定義與調用 55
4.2 函數(shù)參數(shù) 56
4.2.1 形參與實參 56
4.2.2 參數(shù)的默認值 58
4.2.3 關鍵字參數(shù) 59
4.2.4 可變參數(shù)與序列解包 60
4.3 函數(shù)返回值 61
4.4 變量的作用域 62
4.4.1 局部變量與全局變量 62
4.4.2 模塊導入變量 63
4.5 lambda表達式 64
4.5.1 基本用法 64
4.5.2 對序列結構的處理 65
4.5.3 與map()函數(shù)的混合使用 66
4.6 遞歸函數(shù) 67
本章小結 67
習題 68
第5章 字符串與正則表達式 69
5.1 字符串 69
5.1.1 字符串的格式化 70
5.1.2 字符串的常用方法 71
5.2 正則表達式 75
5.2.1 正則表達式語法 75
5.2.2 re模塊方法的使用 77
5.2.3 正則表達式對象 79
本章小結 81
習題 81
第6章 面向對象程序設計 83
6.1 類與對象 83
6.1.1 創(chuàng)建類和對象 83
6.1.2 構造方法 84
6.1.3 實例成員 84
6.2 封裝 86
6.2.1 類的數(shù)據成員 86
6.2.2 類的方法成員 87
6.2.3 訪問控制 88
6.2.4 屬性 90
6.2.5 動態(tài)成員綁定 92
6.3 繼承和多態(tài) 93
6.3.1 繼承 94
6.3.2 多態(tài) 96
6.4 特殊方法與運算符重載 97
6.4.1 常用特殊方法 97
6.4.2 運算符重載 98
本章小結 100
習題 101
第7章 文件操作 102
7.1 文件基本操作 102
7.1.1 文件對象 102
7.1.2 文件讀寫 103
7.2 二進制文件 105
7.2.1 讀寫二進制數(shù)據 106
7.2.2 對象的序列化 106
7.2.3 字節(jié)型數(shù)據的處理 107
7.3 文件系統(tǒng)操作 110
7.3.1 os與os.path模塊 110
7.3.2 shutil模塊 113
7.4 讀寫常見文件格式 113
7.4.1 CSV文件 114
7.4.2 Excel文件 115
7.4.3 Word文件 117
7.4.4 JSON文件 119
本章小結 121
習題 122
第8章 異常處理與程序調試 123
8.1 異常的概念 123
8.2 異常捕獲 125
8.2.1 捕獲指定異常 125
8.2.2 沒有出現(xiàn)指定異常的處理 126
8.2.3 捕獲多個異常 127
8.2.4 帶有finally的異常處理 128
8.3 自定義異常 128
8.3.1 主動拋出異常 129
8.3.2 自定義異常 130
8.4 斷言與上下文管理 131
8.4.1 斷言 131
8.4.2 上下文管理 132
8.5 程序調試 132
8.5.1 使用IDLE調試代碼 132
8.5.2 使用pdb調試代碼 133
本章小結 135
習題 136
第二部分 進 階 篇
第9章 成員訪問、迭代器與生成器 138
9.1 成員訪問 138
9.1.1 基本的序列和映射規(guī)則 138
9.1.2 子類化內置類型 140
9.2 迭代器 141
9.2.1 可迭代對象 141
9.2.2 迭代器規(guī)則 142
9.2.3 創(chuàng)建迭代器 143
9.2.4 從迭代器得到序列 144
9.3 生成器 145
9.3.1 生成器函數(shù) 145
9.3.2 反向迭代器 146
9.3.3 推導式 147
9.3.4 生成器表達式 149
9.3.5 生成器方法 150
9.3.6 生成器的嵌套 151
9.4 內置的可迭代對象 152
9.4.1 map映射迭代器 152
9.4.2 filter過濾迭代器 154
9.4.3 zip組合迭代器 155
9.4.4 enumerate枚舉迭代器 156
本章小結 156
習題 157
第10章 GUI編程 159
10.1 GUI程序的基本框架 159
10.1.1 創(chuàng)建GUI窗口 159
10.1.2 窗體設計 160
10.2 事件與事件驅動 162
10.2.1 事件及其分類 162
10.2.2 窗體的基本元素 163
10.2.3 事件的捕獲與綁定 164
10.2.4 事件驅動編程 166
10.3 窗口布局 170
10.3.1 靜態(tài)布局 170
10.3.2 線性布局 175
10.3.3 網格布局 180
10.3.4 靈活網格布局 180
10.3.5 網格包布局 184
本章小結 187
習題 187
第11章 科學計算與可視化 190
11.1 數(shù)組與矩陣運算 190
11.1.1 列表、數(shù)組和矩陣 190
11.1.2 數(shù)組與標量的算術運算 193
11.1.3 數(shù)組與數(shù)組的運算 194
11.1.4 數(shù)組的切片與索引 199
11.1.5 數(shù)組的函數(shù)運算 201
11.2 科學計算 204
11.3 數(shù)據圖表 208
11.3.1 畫布與坐標系 208
11.3.2 線形圖 210
11.3.3 散點圖 211
11.3.4 條形圖 212
11.3.5 直方圖 214
11.3.6 餅圖 216
11.4 數(shù)據分析 217
11.4.1 標簽化的一維數(shù)組 217
11.4.2 時間序列 219
11.4.3 數(shù)據表格 220
11.4.4 軸向運算 226
11.4.5 分組運算 228
11.5 統(tǒng)計分析 230
本章小結 232
習題 232
第12章 并發(fā)編程 234
12.1 進程 234
12.1.1 進程的執(zhí)行 234
12.1.2 進程同步 236
12.1.3 進程間的數(shù)據交換 238
12.2 線程 242
12.2.1 創(chuàng)建線程 242
12.2.2 線程同步 243
12.3 協(xié)程 247
12.3.1 概念的引入 247
12.3.2 生成器協(xié)程 249
12.3.3 異步處理協(xié)程 253
本章小結 258
習題 259
第13章 數(shù)據庫編程 261
13.1 關系數(shù)據庫訪問 261
13.1.1 數(shù)據庫連接 261
13.1.2 游標的使用 262
13.1.3 行對象 264
13.2 對象關系映射 264
13.2.1 數(shù)據庫引擎 265
13.2.2 數(shù)據庫的映射與綁定 266
本章小結 269
習題 269
第14章 網絡程序設計 270
14.1 網絡架構與協(xié)議 270
14.1.1 網絡互聯(lián)模型 270
14.1.2 UDP編程 271
14.1.3 TCP編程 272
14.2 網頁內容讀取 274
14.2.1 HTTP與HTML 274
14.2.2 采用urllib獲取網絡數(shù)據 276
14.3 Web應用開發(fā) 281
14.3.1 Web服務器網關接口 281
14.3.2 Flask應用框架 285
本章小結 288
習題 289
第15章 大數(shù)據處理 290
15.1 函數(shù)式編程 290
15.1.1 函數(shù)式編程思想 290
15.1.2 高階函數(shù) 291
15.1.3 返回函數(shù) 294
15.1.4 裝飾器 297
15.1.5 偏函數(shù) 302
15.2 Hadoop的MapReduce模型 304
15.2.1 Hadoop的流式數(shù)據處理 304
15.2.2 MapReduce編程案例 305
本章小結 312
習題 312
參考文獻 314