隨著大數(shù)據(jù)技術(shù)的發(fā)展及Python在人工智能領(lǐng)域的火熱應用,Python得到越來越多的應用。本書就是在這個背景下編寫的,是一本Python 3.6入門教材,特別適合想直接切入爬蟲編程及大數(shù)據(jù)分析處理的讀者學習使用。本書贈送示例源代碼與教學視頻。
本書分為16章,主要內(nèi)容包括開發(fā)環(huán)境、數(shù)據(jù)結(jié)構(gòu)、函數(shù)、面向?qū)ο、多線程、模塊、包、GUI模塊、圖形模塊、正則模塊、文件處理模塊、網(wǎng)絡編程模塊和爬蟲模塊等,并且為每個模塊提供了實戰(zhàn)示例,*后用兩章來介紹數(shù)據(jù)庫編程實戰(zhàn)和爬蟲框架實戰(zhàn)。
本書內(nèi)容詳盡、示例豐富,適合廣大Python入門讀者和Python開發(fā)人員閱讀,同時也可作為高等院校和培訓學校計算機相關(guān)專業(yè)的師生教學參考。
Python語言因其具有豐富且強大的庫,以及簡單容易上手的特性,目前幾乎活躍在所有的技術(shù)領(lǐng)域,包括人工智能、大數(shù)據(jù)分析處理、機器學習與深度學習、金融量化交易、網(wǎng)絡開發(fā)、服務器編程、Web編程、運維自動化、物聯(lián)網(wǎng)等領(lǐng)域。越來越多的新人都急切希望找到一本容易上手的Python入門書。本書就能滿足零基礎讀者的Python需求,書中所有的知識點都通過大小示例讓讀者反復練習,激發(fā)讀者學習興趣,快速掌握Python編程技巧,獲得生產(chǎn)力。
前 言
不管你從事的是什么行業(yè),進行數(shù)據(jù)分析也好,開發(fā)網(wǎng)頁也好,做數(shù)據(jù)庫后臺編程也好,做股票分析也好,Python都是你必須學會的一門語言。市場上有很多圖書,隨Python版本的升級會顯得比較舊,講解方式也比較費解。本書選擇比較新的Python 3.6.4版本用初學者容易上手的示例學習方法進行講解,全書邏輯線索清晰,方便讀者輕松入門。
本書特色
如何快速學習Python編程一直是很多初學者的疑問,網(wǎng)上的資料很多,但不系統(tǒng),很多系統(tǒng)的教程又過于偏重講解,示例較少,讓初學者很難堅持。因此,對于很多入門讀者,更好的方式是先學習基礎的Python語法,然后學習各種常見模塊,最后在實踐中完善代碼編寫技巧。學習過程中貫穿大小示例,方便讀者對知識點做實踐,基于這種想法,筆者編寫了本書。本書特色如下:
1. 上手門檻低,完全無基礎也可入門
作為入門圖書,不會涉及計算機原理、操作系統(tǒng)等枯燥內(nèi)容,讀者可以沒有這方面的基礎,本書提供詳細的開發(fā)環(huán)境搭建步驟及編程技巧講解,手把手指導讀者入門Python。
2. 多個操作系統(tǒng)版本介紹,Linux、Windows、MacOS都可以輕松學習
當前流行的操作系統(tǒng)各異,有些讀者喜歡Linux,有些公司提供MacOS,更多的是常見的Windows,本書很多案例都會提供不同操作系統(tǒng)的介紹,讓讀者了解Python的跨平臺特性,在任何操作系統(tǒng)下都可輕松學習。
3. 多個上手小示例,幾乎每章最后都有應用實戰(zhàn),讓讀者綜合練習,學完就會
讀者學會了Python語法,只是了解了如何寫Python代碼,但是如何用Python解決問題卻需要很多項目來練手。本書幾乎每章最后都提供或小或大的實戰(zhàn)案例,讓讀者既學會語法也學會編程。
代碼、教學視頻下載
本書配套的示例代碼與教學視頻下載地址可以通過掃描右邊的二維碼獲取。如果下載有問題或閱讀中存在疑問,請聯(lián)系booksaga@163.com,郵件主題為Python3.6零基礎入門與實戰(zhàn)。
本書讀者
本書適合以下讀者閱讀:
? 沒有學過編程,但對Python編程感興趣的讀者
? 有計算機語言基礎,想入門Python編程的讀者
? Python數(shù)據(jù)分析處理入門讀者
? 機器學習入門讀者
? 網(wǎng)絡爬蟲愛好者
? 初級網(wǎng)絡管理員
? 企業(yè)網(wǎng)絡運維人員
本書作者
本書由王啟明、羅從良編著,其中第1~8章、第15~16章由平頂山學院信息工程學院的王啟明編寫,第9~14章由羅從良編寫,其他參與創(chuàng)作的還有王曉華、劉鑫、陳素清、常新峰、林龍、王亞飛、薛燚、王剛、吳貴文、李雷霆、李一鳴、謝志強,排名不分先后。
編者
2018年8月
王啟明,平頂山學院老師,主講軟件基礎語言C和Python,目前是學校信息化小組的主要帶頭人,計算機教研組組長。長期工作在教學第一線,承擔了本科生教學及畢業(yè)設計任務。C和Python課收到學生好評。
目 錄
第1章 搭建Python開發(fā)環(huán)境 1
1.1 Python的版本說明 1
1.2 Python的安裝 2
1.2.1 Windows下安裝Python 2
1.2.2 Linux下安裝Python 6
1.3 打開Python的方式 8
1.4 交互模式解釋器 9
1.5 第一個Python程序Hello World 10
1.5.1 交互式 10
1.5.2 腳本式 10
1.6 Python開發(fā)工具 11
1.6.1 Python自帶集成開發(fā)環(huán)境IDEL 11
1.6.2 安裝PyCharm集成開發(fā)環(huán)境 14
1.6.3 使用PyCharm集成開發(fā)環(huán)境 21
1.7 注意Python的縮進 22
第2章 Python中的數(shù)據(jù)與結(jié)構(gòu) 24
2.1 Python中的標準數(shù)據(jù)類型 24
2.2 變量 25
2.3 數(shù)字 26
2.3.1 使用整型 26
2.3.2 使用浮點型 27
2.3.3 使用布爾型 28
2.3.4 使用復數(shù)型 29
2.4 字符串 29
2.4.1 字符串的單引號、雙引號、三引號 29
2.4.2 字符串的截取 30
2.4.3 字符串的拼接 31
2.4.4 字符串的各種常用運算符 32
2.4.5 字符串的轉(zhuǎn)義 33
2.4.6 字符串的格式化符號 34
2.4.7 字符串的內(nèi)置函數(shù) 37
2.5 列表 39
2.5.1 使用列表 39
2.5.2 訪問列表 40
2.5.3 列表常用的內(nèi)置函數(shù) 41
2.5.4 列表排序 43
2.5.5 刪除列表 44
2.5.6 獲取列表中的最大值和最小值 45
2.5.7 列表常用運算符 45
2.6 元組 46
2.6.1 使用元組 46
2.6.2 訪問元組 47
2.6.3 元組常用的內(nèi)置函數(shù) 47
2.6.4 刪除元組 48
2.6.5 獲取元組中的最大值和最小值 48
2.6.6 元組常用運算符 48
2.6.7 元組與列表的轉(zhuǎn)換 49
2.7 字典 49
2.7.1 使用字典 49
2.7.2 訪問字典 50
2.7.3 字典常用的內(nèi)置函數(shù) 50
2.7.4 刪除字典 52
2.7.5 字典常用運算符 53
2.8 集合 53
2.8.1 使用集合 54
2.8.2 集合常用的內(nèi)置函數(shù) 54
2.8.3 集合常用運算符(交集、并集、差集、對稱差集) 56
2.9 推導式 57
2.9.1 初識推導 57
2.9.2 嵌套推導 58
2.10 數(shù)據(jù)結(jié)構(gòu)實戰(zhàn):文本統(tǒng)計分析 59
2.10.1 文本統(tǒng)計功能 59
2.10.2 文本比較功能 60
第3章 結(jié)構(gòu)語句 62
3.1 順序、選擇和循環(huán) 62
3.1.1 順序結(jié)構(gòu) 62
3.1.2 選擇結(jié)構(gòu) 63
3.1.3 循環(huán)結(jié)構(gòu) 64
3.2 用if選擇 64
3.2.1 選擇語句格式 65
3.2.2 選擇語句詳解 66
3.2.3 選擇語句的嵌套 66
3.3 用while循環(huán) 67
3.3.1 while語句基本格式 67
3.3.2 while語句的應用 68
3.3.3 無限循環(huán)(死循環(huán)) 69
3.3.4 帶else的while循環(huán) 70
3.4 用for循環(huán) 71
3.4.1 for語句基本格式 71
3.4.2 for語句的應用 71
3.4.3 for與range結(jié)合遍歷數(shù)字序列 72
3.5 中斷語句break、continue 73
3.5.1 break語句 73
3.5.2 continue語句 74
3.6 循環(huán)實戰(zhàn):九九乘法表 75
第4章 函數(shù) 77
4.1 使用函數(shù) 77
4.1.1 定義函數(shù) 77
4.1.2 函數(shù)的返回值 78
4.1.3 函數(shù)的嵌套 78
4.2 函數(shù)的參數(shù) 79
4.2.1 形參、實參 79
4.2.2 必要參數(shù) 79
4.2.3 有默認值的參數(shù) 80
4.2.4 關(guān)鍵字參數(shù) 81
4.2.5 不定長參數(shù)(可變參數(shù)) 82
4.2.6 各種參數(shù)組合 83
4.3 全局變量、局部變量 83
4.3.1 全局和局部的概念 83
4.3.2 函數(shù)中局部變量的作用域 84
4.3.3 global全局變量 84
4.4 匿名函數(shù) 85
4.4.1 使用匿名函數(shù) 85
4.4.2 匿名函數(shù)的參數(shù)默認值 86
4.5 函數(shù)實戰(zhàn):八皇后問題 86
第5章 面向?qū)ο缶幊?92
5.1 面向?qū)ο蠡A 92
5.2 定義與使用類 93
5.2.1 類的定義 93
5.2.2 類的構(gòu)造方法和析構(gòu)方法 94
5.2.3 類的私有屬性 95
5.2.4 類的私有方法 96
5.2.5 一個完整的類 96
5.3 類與類的關(guān)系 97
5.3.1 單繼承 98
5.3.2 多繼承 99
5.3.3 類的關(guān)聯(lián)和依賴 99
5.3.4 類的聚合和復合 101
5.4 重寫 102
5.5 魔術(shù)方法 102
5.5.1 魔術(shù)方法的概念 102
5.5.2 魔術(shù)方法的應用 103
5.6 迭代器 106
5.7 生成器 107
5.7.1 生成器的概念 107
5.7.2 生成器的應用 107
5.8 裝飾器 108
5.8.1 裝飾器基礎 108
5.8.2 不帶參數(shù)的裝飾器 109
5.8.3 帶參數(shù)的裝飾器 110
5.8.4 多個裝飾器裝飾一個函數(shù) 111
5.9 上下文管理器與with語句 112
5.9.1 上下文管理器的幾個概念 112
5.9.2 上下文管理器的應用 113
5.9.3 自定義上下文管理器 113
5.10 面向?qū)ο髮崙?zhàn):數(shù)字圖形 114
5.10.1 需求分析 114
5.10.2 程序開發(fā) 118
5.10.3 程序入口 123
第6章 程序異常與調(diào)試 124
6.1 識別異常 124
6.1.1 異常的概念 124
6.1.2 語法引出的異常 125
6.1.3 運行時引出的異常 125
6.1.4 分析異常提示信息 125
6.2 Python中處理異常的語法 126
6.3 處理異常的細節(jié) 127
6.3.1 except語句的多種形式 127
6.3.2 拋出異常(引發(fā)異常)raise 130
6.4 自定義異常 130
6.5 調(diào)試程序 131
6.5.1 IDLE的簡單調(diào)試 131
6.5.2 利用日志模塊logging調(diào)試 132
6.5.3 利用pdb調(diào)試 133
6.6 異常實戰(zhàn):計算機猜數(shù) 135
6.6.1 需求分析 135
6.6.2 算法分析 136
6.6.3 編程實現(xiàn) 138
6.6.4 異常處理 141
6.6.5 異常類定義 141
6.6.6 拋出和捕獲異常 142
第7章 多線程 145
7.1 線程的概念 145
7.2 創(chuàng)建多線程 146
7.2.1 通過threading.Thread()創(chuàng)建線程 146
7.2.2 通過繼承threading.Thread類創(chuàng)建線程 147
7.3 主 線 程 148
7.4 阻塞線程 149
7.5 判斷線程是否是活動的 150
7.6 線程同步 152
7.6.1 同步的概念 152
7.6.2 Python中的鎖 153
7.6.3 Python中的條件鎖 153
第8章 模塊和包 157
8.1 模塊 157
8.1.1 標準庫中的模塊 157
8.1.2 查看模塊的代碼 158
8.2 導入模塊 160
8.2.1 最簡單的導入 160
8.2.2 from…import語句 161
8.2.3 from…import *語句 162
8.2.4 導入自定義的模塊 162
8.3 包 163
8.3.1 包和模塊的區(qū)別 163
8.3.2 包的結(jié)構(gòu) 164
8.3.3 導入自定義的包 164
8.4 命名空間 165
8.4.1 命名空間 166
8.4.2 全局命名空間 167
8.4.3 局部命名空間 168
8.4.4 命名空間和類 169
8.4.5 命名空間和類的實例化 170
8.4.6 命名空間和類的繼承 172
第9章 Tkinter模塊圖形界面編程 174
9.1 Tkinter模塊 174
9.1.1 Tkinter模塊的Hello World 程序 175
9.1.2 tkinter包介紹 177
9.1.3 主窗口 178
9.2 Tkinter控件 179
9.2.1 控件的介紹 179
9.2.2 控件的特性 181
9.2.3 Tkinter幾何管理器 182
9.2.4 Tkinter 事件及回調(diào) 185
9.3 Tkinter實戰(zhàn) 186
9.3.1 創(chuàng)建主窗口 186
9.3.2 添加菜單欄及菜單選項 186
9.3.3 添加下拉菜單 188
9.3.4 實現(xiàn)簡單記事本 190
第10章 re模塊正則表達式 193
10.1 正則表達式簡介 193
10.1.1 正則表達式概念 193
10.1.2 正則表達式構(gòu)成 194
10.2 re模塊的簡單應用 196
10.3 常用正則表達式 199
10.3.1 常用數(shù)字表達式的校驗 200
10.3.2 常用字符表達式的校驗 202
10.3.3 特殊需求表達式的校驗 203
第11章 os模塊與shutil模塊文件處理 206
11.1 os模塊 206
11.1.1 獲取系統(tǒng)類型 206
11.1.2 獲取系統(tǒng)環(huán)境 207
11.1.3 執(zhí)行系統(tǒng)命令 208
11.1.4 操作目錄及文件 209
11.2 shutil模塊 214
11.2.1 復制文件 214
11.2.2 移動文件 216
11.2.3 讀取壓縮及歸檔壓縮文件 216
11.2.4 解壓文件 217
11.3 文件處理實戰(zhàn) 217
第12章 PIL(Pillow)模塊圖像實戰(zhàn) 220
12.1 Pillow庫簡介與安裝 220
12.1.1 Pillow庫的介紹 221
12.1.2 Pillow庫的安裝 221
12.2 Image類的使用 222
12.2.1 Image類的屬性 222
12.2.2 Image類的函數(shù) 223
12.3 圖像的基本合成 231
12.3.1 調(diào)用Image.composite接口 231
12.3.2 調(diào)用Image.blend接口 232
12.3.3 調(diào)用Image.paste接口 232
12.4 圖像的變換 233
12.4.1 圖像格式及尺寸變換 233
12.4.2 圖像通道變換 234
12.4.3 圖像幾何變換 235
12.4.4 圖像變換成OpenCV格式 235
12.5 圖像處理實戰(zhàn) 236
第13章 socket模塊網(wǎng)絡編程 237
13.1 網(wǎng)絡編程基礎 237
13.1.1 網(wǎng)絡協(xié)議 237
13.1.2 IP地址與端口 239
13.1.3 socket 240
13.2 使用TCP的服務器與客戶端 246
13.2.1 TCP工作原理 246
13.2.2 TCP服務器的實現(xiàn) 247
13.2.3 TCP客戶端的實現(xiàn) 248
13.3 使用UDP的服務器與客戶端 250
13.3.1 UDP工作原理 251
13.3.2 UDP服務器的實現(xiàn) 251
13.3.3 UDP客戶端的實現(xiàn) 252
13.4 網(wǎng)絡編程實戰(zhàn) 253
第14章 urllib工具包網(wǎng)絡爬蟲編程 257
14.1 urllib、urllib2與urllib3的異同 257
14.2 request模塊 259
14.2.1 urlopen()、build_opener()和build_opener()方法 260
14.2.2 Request類 263
14.2.3 其他類 266
14.3 error模塊 267
14.4 parse模塊 268
14.4.1 URL解析 268
14.4.2 URL轉(zhuǎn)義 271
14.5 robotparser模塊 274
14.6 urllib網(wǎng)絡爬蟲實戰(zhàn) 275
第15章 Python數(shù)據(jù)庫編程實戰(zhàn) 278
15.1 操作SQLite 278
15.1.1 創(chuàng)建SQLite數(shù)據(jù)庫 278
15.1.2 創(chuàng)建SQLite數(shù)據(jù)表 279
15.1.3 為數(shù)據(jù)表添加數(shù)據(jù) 280
15.1.4 查詢數(shù)據(jù) 280
15.1.5 更新數(shù)據(jù) 281
15.1.6 刪除數(shù)據(jù) 281
15.1.7 connect和cursor的各種函數(shù) 281
15.2 操作MySQL 282
15.2.1 安裝PyMySQL庫 282
15.2.2 連接MySQL數(shù)據(jù)庫 283
15.2.3 增、刪、查、改數(shù)據(jù) 284
15.3 使用ORM框架SQLAlchemy操作MySQL 284
15.3.1 ORM的意義 285
15.3.2 安裝SQLAlchemy 285
15.3.3 導入SQLAlchemy 286
15.3.4 使用SQLAlchemy操作數(shù)據(jù)庫 286
第16章 Scrapy爬蟲實戰(zhàn) 288
16.1 安裝Scrapy 288
16.1.1 Windows下安裝Scrapy環(huán)境 288
16.1.2 Linux下安裝Scrapy 289
16.1.3 vim編輯器 290
16.2 Scrapy選擇器XPath和CSS 291
16.2.1 XPath選擇器 291
16.2.2 CSS選擇器 294
16.2.3 其他選擇器 295
16.3 天氣預報項目 296
16.3.1 項目準備 296
16.3.2 創(chuàng)建編輯Scrapy爬蟲 297
16.3.3 數(shù)據(jù)存儲到json 303
16.3.4 數(shù)據(jù)存儲到MySQL 305