本書從Python 語言的基礎語法講起,逐步深入地介紹了Python各種庫,并且介紹了這些庫的實戰(zhàn)案例,重點介紹了爬蟲開發(fā), GUI應用程序開發(fā),容器管理, Redis數據庫操作以及數據處理和神經網絡方面的內容。讓讀者不但可以系統地學習Python編程的相關知識,而且還能對Python在各個領域的應用有更為深入的理解。
本書分為21章,涵蓋的主要內容有Python語言基礎和Python在多個領域的應用。重點介紹了多線程編程; GUI應用程序開發(fā);web編程;爬蟲開發(fā);容器管理;數據處理以及神經網絡上的應用。
本書內容通俗易懂,案例豐富,實用性強,特別適合Python語言的入門讀者和進階讀者閱讀,也適合自動化測試人員、自動運維人員閱讀。另外,本書也適合作為相關培訓機構的教材使用。
前言
第1篇 Python編程基礎
第1章 Python語言基礎2
1.1 Python語言介紹2
1.2 Python版本介紹3
1.2.1 Python語言的版本3
1.2.2 Python的實現版本4
1.3 集成開發(fā)環(huán)境9
1.3.1 PyCharm9
1.3.2 Anaconda10
1.4 代碼的運行方式17
1.5 網頁運行方式19
1.6 基本語法23
1.7 Python之禪26
第2章 基本數據類型28
2.1 整數類型28
2.1.1 整數的表示法28
2.1.2 數值運算29
2.1.3 位運算31
2.1.4 移位運算33
2.1.5 類型轉換34
2.1.6 其他進制表示法35
2.1.7 小整數池39
2.1.8 統計成績的例子40
2.1.9 韓信點兵的故事41
2.2 布爾類型42
2.2.1 布爾運算42
2.2.2 類型轉換44
2.2.3 例子:誰在說謊44
2.3 字節(jié)流46
2.4 浮點數50
2.4.1 基本運算51
2.4.2 其他運算52
2.4.3 類型轉換53
2.4.4 例子:求某個數的平方根53
2.5 列表54
2.5.1 列表特性55
2.5.2 常見操作56
2.5.3 找出丟失的數60
2.5.4 背包問題61
2.6 字符串63
2.6.1 str類型的字符串64
2.6.2 str類型的相關接口函數64
2.6.3 bytes類型68
2.6.4 str類型和bytes類型的轉換69
2.7 元組70
2.7.1 元組的表示法70
2.7.2 元組接口函數71
2.8 集合72
2.8.1 創(chuàng)建集合72
2.8.2 基本操作73
2.8.3 例子:刪除重復元素79
2.9 字典80
2.9.1 創(chuàng)建字典81
2.9.2 基本操作81
2.9.3 例子:合并結果86
2.9.4 例子:如何安全過河87
2.10 NoneType類型94
2.11 變量、對象和值的關系94
第3章 函數99
3.1 函數的定義和使用99
3.2 函數的返回值100
3.3 函數的參數100
3.3.1 位置參數101
3.3.2 將位置參數當作元組101
3.3.3 調用時使用元組和列表103
3.3.4 關鍵字參數104
3.3.5 將實參當作字典104
3.3.6 調用時使用字典105
3.3.7 默認值105
3.4 常見的系統自帶函數106
3.4.1 數據對象有關的函數106
3.4.2 數學計算有關的函數109
3.4.3 容器類型有關的函數111
3.4.4 屬性操作116
3.5 lambda函數117
3.6 遞歸調用118
3.6.1 遞歸調用介紹118
3.6.2 例子119
第4章 模塊和包126
4.1 模塊126
4.2 包128
4.3 軟件包的安裝129
4.3.1 復制源代碼到系統目錄129
4.3.2 使用PIP進行安裝130
4.3.3 使用easy_install和setup進行安裝134
第5章 文件操作135
5.1 文件的基本操作135
5.2 打開文件136
5.3 文件對象的操作137
5.4 關閉文件142
5.5 特殊文件143
5.6 文件對象的屬性145
第6章 基礎庫146
6.1 正則表達式庫146
6.1.1 元字符和語法147
6.1.2 C風格接口函數154
6.1.3 面向風格接口函數155
6.1.4 re.Match對象155
6.2 數學庫157
6.3 時間庫159
6.3.1 時間表示法159
6.3.2 接口函數160
6.4 日期庫162
6.5 二叉樹庫162
6.6 串行化庫164
6.6.1 基本流程164
6.6.2 pickle用法165
6.7 隨機數庫166
6.7.1 生成隨機整數和隨機實數167
6.7.2 其他形式的隨機169
6.7.3 偽隨機問題170
6.7.4 例子:計算面積171
6.7.5 游戲:五對胡172
第7章 異常處理177
7.1 Python中的異常處理177
7.1.1 捕捉異常177
7.1.2 沒有異常才執(zhí)行的分支180
7.1.3 無論有無異常都要執(zhí)行的分支181
7.2 拋出異常182
7.3 常見的系統定義異常183
第8章 類和對象187
8.1 類的定義和實例創(chuàng)建187
8.2 類的屬性189
8.3 初始化函數和銷毀函數190
8.4 實例對象的屬性192
8.4.1 類屬性和實例對象屬性的關系192
8.4.2 self在類定義中表示當前對象194
8.4.3 通過delattr()、setattr()等接口函數來操作屬性196
8.5 靜態(tài)方法198
8.6 類方法199
8.7 訪問控制199
8.8 只讀屬性200
8.8.1 使用@property修飾符200
8.8.2 重新定義__setattr__()函數201
8.9 類屬性的安全檢查202
8.10 派生類203
8.11 多重繼承204
第2篇 Python編程高級主題
第9章 多線程208
9.1 線程介紹208
9.2 Python中的線程209
9.2.1 主線程209
9.2.2 線程狀態(tài)209
9.3 thread包210
9.3.1 線程的啟動211
9.3.2 線程的退出212
9.4 threading包213
9.4.1 創(chuàng)建線程實例對象213
9.4.2 派生自己的線程類216
9.4.3 配置線程217
9.4.4 啟動線程218
9.4.5 停止線程219
9.4.6 等待線程結束220
9.4.7 其他接口函數221
9.5 線程同步222
9.5.1 線程鎖thread.Lock223
9.5.2 線程鎖threading.Lock224
9.5.3 可重入鎖threading.RLock225
9.5.4 條件變量threading.Condition227
9.5.5 信號量threading.Semaphore228
9.5.6 事件threading.Event231
9.6 線程安全233
9.7 死鎖236
第10章 多進程239
10.1 進程的概念239
10.2 subprocess模塊240
10.2.1 面向過程的接口函數241
10.2.2 Popen類244
10.3 multiprocessing模塊247
10.3.1 創(chuàng)建進程247
10.3.2 進程的屬性249
10.3.3 進程的接口函數253
10.3.4 進程池258
10.3.5 進程通信260
10.4 os模塊265
10.4.1 啟動進程——system()265
10.4.2 啟動進程并得到輸出——popen ()265
10.4.3 得到當前進程ID——getpid ()266
10.4.4 得到父進程ID——getppid ()266
第11章 迭代器和生成器268
11.1 迭代器268
11.2 生成器269
11.2.1 定義生成器270
11.2.2 接口函數270
第12章 裝飾器275
12.1 起源275
12.2 被裝飾函數帶有參數276
12.3 裝飾函數帶有參數279
12.4 裝飾函數帶有返回值280
12.5 使用多個裝飾器281
12.6 常用裝飾器282
12.6.1 類裝飾器282
12.6.2 退出時執(zhí)行的函數284
12.6.3 單例模式284
12.6.4 執(zhí)行時間限制285
12.6.5 執(zhí)行時間標定286
12.6.6 自動重新運行287
12.6.7 狀態(tài)機288
第13章 數據文件操作293
13.1 csv文件的處理293
13.2 yaml文件的處理296
13.3 json文件的處理298
第14章 軟件測試301
14.1 無框架的測試301
14.2 PyUnit測試框架305
14.2.1 運行方式307
14.2.2 生成測試報告309
14.2.3 測試步驟312
14.2.4 斷言317
14.2.5 測試用例的接口函數328
14.2.6 覆蓋率330
14.3 Pytest測試框架333
14.3.1 測試用例333
14.3.2 選擇執(zhí)行的測試用例335
14.3.3 生成測試報告339
14.3.4 測試步驟341
14.3.5 斷言345
14.3.6 覆蓋率346
14.3.7 插件349
第15章 網絡編程357
15.1 TCP/IP協議介紹357
15.2 socket介紹361
15.3 TCP echo服務器363
15.4 簡單的TCP客戶端364
15.5 UDP版的echo服務器365
第16章 容器操作367
16.1 Docker的安裝367
16.2 Docker的基本概念369
16.3 docker-py庫370
16.3.1 建立連接370
16.3.2 對Docker鏡像的操作371
16.3.3 運行Docker鏡像377
16.4 kubernetes庫379
第17章 Scrapy爬蟲框架388
17.1 Scrapy的安裝388
17.2 工作原理390
17.3 一個簡單的例子391
17.4 Scrapy的架構圖393
17.5 爬蟲395
17.5.1 點贊統計例子395
17.5.2 爬蟲類396
17.6 一個完整的項目398
17.7 結果數據400
17.8 選擇器402
17.8.1 介紹403
17.8.2 text()404
17.8.3 extract()/extract_first()405
17.8.4 @屬性406
17.8.5 元素[@屬性] 406
17.9 設置407
17.9.1 命令行方式407
17.9.2 爬蟲范圍內的設置408
17.9.3 項目范圍內的設置408
17.9.4 命令默認設定409
17.9.5 全局默認設定409
17.9.6 讀取配置411
17.9.7 常用配置412
17.10 命令行工具414
17.10.1 創(chuàng)建項目414
17.10.2 創(chuàng)建爬蟲415
17.10.3 列出爬蟲模板416
17.10.4 查看某個爬蟲模板417
17.10.5 基于模板創(chuàng)建爬蟲418
17.10.6 啟動爬蟲418
17.10.7 爬蟲列表419
17.10.8 爬取指定頁面420
17.10.9 在瀏覽器中顯示頁面421
17.10.10 啟動交互式shell422
17.10.11 runspider423
17.10.12 標定Scrapy的性能424
17.10.13 其他命令425
17.11 爬取北京公交線路數據426
第18章 Flask Web開發(fā)框架429
18.1 Flask的安裝429
18.2 最簡單的Flask應用430
18.3 路由430
18.3.1 動態(tài)路由431
18.3.2 限定類型432
18.3.3 地址尾部的“/”433
18.4 運行應用的參數435
18.5 命令行方式運行436
18.6 HTTP的方法437
18.7 靜態(tài)文件437
18.8 模板438
18.8.1 變量439
18.8.2 表達式440
18.8.3 子模板442
第19章 鍵值數據庫Redis444
19.1 介紹444
19.2 服務器的安裝445
19.2.1 服務器容器下載446
19.2.2 啟動Redis容器446
19.3 Python客戶端的安裝448
19.4 元操作448
19.5 字符串數據的操作449
19.6 哈希數據的操作456
19.7 列表數據的操作458
19.8 集合數據的操作460
19.9 訂閱發(fā)布462
19.9.1 基本用法462
19.9.2 訂閱多個頻道465
19.9.3 頻道使用通配符466
19.10 設置時效467
19.11 管道模式467
第20章 圖形界面應用469
20.1 Tk和Tkinter469
20.1.1 基本程序結構470
20.1.2 常用組件471
20.1.3 布局487
20.1.4 游戲2048489
20.2 wxPython494
20.2.1 程序基本結構494
20.2.2 基本用戶界面元素495
20.3 PyQt508
20.3.1 基本程序結構508
20.3.2 常用組件509
20.4 小結517
第21章 數據處理518
21.1 matplotlib518
21.2 NumPy526
21.2.1 ndarray的構造526
21.2.2 ndarray的一些屬性531
21.2.3 ndarray的一些操作532
21.2.4 NumPy在金融領域的應用534
21.2.5 NumPy中的傅里葉變換537
21.2.6 神經網絡應用541