本書內容齊全,通過范例循序漸進地講解了開發Python應用程序的知識。本書主要內容包括:Python圖形圖像開發、多線程開發、Python游戲開發、數據可視化、Flask Web開發、Django Web開發、Python算法等知識。
本書既適合零基礎的人員學習,也適合已經了解了Python基礎語法的、希望進一步提高Python開發水平的讀者閱讀,還可作為程序員的參考書。
1.內容豐富,范例眾多
本書的范例幾乎覆蓋了主流的Python應用領域,通過講解眾多的實例,幫助讀者有效地學習和使用Python的強大功能,并逐步步入Python開發高手之列。
2.貼心提示和注意事項提醒
本書根據需要安排了“注意”等小板塊,幫助讀者理解相關知識點及概念,更快地掌握Python的應用技巧。
3.通過提供答疑服務
讀者閱讀本書時,無論遇到任何問題,都可以通過QQ群隨時與筆者互動。
張善香 Java、C++、PHP、Python等開發語言,現在負責云的研發和架構工作。從2014年起便開始研究機器學習課題,是國內最早從事相關研究的專家之一。
目 錄
第 10章 圖形圖像開發實戰1
10.1 使用Pillow庫2
范例10-01:安裝Pillow庫2
范例10-02:使用Image模塊創建隨機大小圖片2
范例10-03:使用Image模塊打開一幅圖片3
范例10-04:實現圖片透明度混合3
范例10-05:實現圖片遮罩混合處理4
范例10-06:縮放指定圖片5
范例10-07:使用Image模塊縮放指定圖片5
范例10-08:對指定圖片實現剪切和粘貼功能6
范例10-09:對指定圖片的格式進行轉換6
范例10-10:旋轉指定圖片7
范例10-11:對指定圖片實現過濾模糊操作8
范例10-12:使用其他內置函數8
范例10-13:使用Pillow繪制隨機點陣圖和點陣圖9
范例10-14:將PNG圖片轉換為可讀寫的RLE圖片10
范例10-15:使用ImageChops模塊實現圖片合成13
范例10-16:實現圖像增強處理13
范例10-17:實現同時增強處理多幅圖像14
范例10-18:對指定圖片實現濾鏡特效15
范例10-19:使用ImageDraw模塊繪制二維圖像16
范例10-20:使用ImageFont模塊繪制二維圖像17
范例10-21:生成隨機驗證碼圖片18
范例10-22:使用ImageFont模塊繪制驗證碼18
范例10-23:繪制指定年份的日歷19
10.2 pyBarcode庫實戰20
范例10-24:創建EAN-13標準的條形碼20
范例10-25:將創建的EAN-13標準條形碼保存為PNG圖片20
范例10-26:創建兩個條形碼圖片21
10.3 使用庫qrcode創建二維碼21
范例10-27:將文本信息生成為一個二維碼21
范例10-28:將網址信息生成為一個二維碼22
范例10-29:將網址信息生成為一個指定樣式二維碼22
范例10-30:將網址信息生成為一個帶有素材圖片的二維碼23
范例10-31:使用qrcode開發一個二維碼生成器24
10.4 scikit-image開發實戰26
范例10-32:安裝scikit-image26
范例10-33:使用skimage讀入并顯示外部圖像26
范例10-34:讀取并顯示外部灰度圖像27
范例10-35:讀取并顯示內置星空圖片27
范例10-36:讀取并保存內置星空圖片28
范例10-37:顯示內置星空圖片的基本信息29
范例10-38:實現內置貓圖片的紅色通道的效果29
范例10-39:對內置貓圖片進行二值化操作30
范例10-40:對內置貓圖片進行裁剪處理31
范例10-41:將unit8類型轉換成float類型31
范例10-42:將float類型轉換成unit8類型31
范例10-43:將RGB圖轉換為灰度圖32
范例10-44:使用skimage實現繪制圖片功能32
范例10-45:使用subplot()函數繪制多視圖窗口圖片33
范例10-46:使用subplots()函數繪制多視圖窗口圖片34
范例10-47:使用viewer繪制并顯示內置月亮圖片35
范例10-48:顯示系統內指定素材圖片35
范例10-49:讀取并顯示文件夾pic中JPG圖片的個數36
范例10-50:將指定素材圖片批量轉換為灰度圖36
范例10-51:使用函數concatenate_images(ic)連接圖片37
范例10-52:改變指定圖片的大小37
范例10-53:使用函數rescale()縮放指定圖片38
范例10-54:使用函數rotate()旋轉指定圖片38
10.5 使用face_recognition 實現人臉識別39
范例10-55:搭建開發環境39
范例10-56:顯示指定人像的人臉特征39
范例10-57:在指定照片中識別人臉40
范例10-58:識別照片中的所有人臉41
范例10-59:判斷照片中是否包含某個人臉43
范例10-60:識別照片中的人到底是誰43
范例10-61:攝像頭實時識別44
第 11章 多線程開發實戰46
11.1 使用threading模塊47
范例11-01:使用_thread模塊創建2個線程47
范例11-02:直接在線程中執行函數47
范例11-03:通過繼承類threading.Thread創建線程48
范例11-04:使用方法join()實現線程等待48
范例11-05:使用RLock實現線程同步49
范例11-06:使用Lock對臨界區加鎖49
范例11-07:使用上下文管理器避免死鎖50
范例11-08:測試前面上下文管理器文件的功能51
范例11-09:5位哲學家就餐問題52
范例11-10:使用Condition實現一個捉迷藏游戲53
范例11-11:實現一個周期性的定時器54
范例11-12:使用Semaphore對象執行4個線程55
范例11-13:只喚醒一個單獨的等待線程55
范例11-14:使用BoundedSemaphore對象執行4個線程56
范例11-15:使用Event對象實現線程同步57
范例11-16:使用Event對象同步線程的啟動57
范例11-17:使用Timer設置線程延遲5s后執行58
范例11-18:使用local對象管理線程局部數據59
范例11-19:使用local()創建一個線程本地存儲對象59
11.2 使用進程庫multiprocessing60
范例11-20:使用Process對象生成進程60
范例11-21:使用Pipe對象創建雙向管道61
范例11-22:使用Queue對象放入進程61
范例11-23:使用Connection對象處理數據62
范例11-24:使用Shared對象在共享內存中創建共享ctypes對象62
范例11-25:使用Manager對象操作列表63
范例11-26:使用Manager對象共享對象類型63
范例11-27:使用Proxy對象共享對象類型64
范例11-28:使用Pool對象創建多個進程并實現并發處理65
范例11-29:使用Pool對象實現進程調度65
范例11-30:使用Pool對象并行處理某個目錄下的文件66
范例11-31:使用線程和隊列實現Actor并發編程模式67
范例11-32:使用元組的形式傳遞帶標簽消息68
范例11-33:實現一個Actor并發編程模式的變種69
11.3 使用庫concurrent.futures69
范例11-34:使用submit()方法操作線程池70
范例11-35:使用map()方法返回迭代器結果70
范例11-36:使用wait()方法返回一個元組70
范例11-37:使用ThreadPoolExecutor實現異步調用71
范例11-38:使用ProcessPoolExecutor實現異步調用71
范例11-39:使用線程池服務 客戶端72
范例11-40:手動創建自己的 線程池73
范例11-41:使用ThreadPoolExecutor 創建線程池的優勢73
范例11-42:讀取數據并標識出 所有訪問過文件73
范例11-43:實現多核讀取操作74
范例11-44:使用類Future實現 封裝操作75
范例11-45:使用生成器代替 線程實現并發76
范例11-46:使用生成器來實現Actor并發77
11.4 使用sched模塊78
范例11-47:使用類scheduler實現時間調度78
范例11-48:使用scheduler對象實現時間調度78
范例11-49:使用sched()方法定時執行任務79
范例11-50:使用sched循環執行任務79
范例11-51:使用queue模塊實現線程之間數據通信80
范例11-52:構建一個線程安全的優先級隊列81
范例11-53:實現FIFO隊列82
范例11-54:實現LIFO隊列83
范例11-55:使用模塊queue實現優先級隊列83
范例11-56:輪詢多個線程隊列83
11.5 使用模塊subprocess85
范例11-57:使用模塊subprocess創建子進程85
范例11-58:使用類Popen創建進程并執行指定源碼86
第 12章 Python游戲開發實戰87
12.1 簡單的小游戲88
范例12-01:猜數游戲88
范例12-02:龍的世界游戲89
范例12-03:Hangman游戲90
范例12-04:愷撒密碼游戲94
范例12-05:維吉尼亞密碼游戲94
范例12-06:Reversi黑白棋游戲95
范例12-07:石頭、剪子、布游戲99
12.2 Pygame游戲開發初級實戰101
范例12-08:安裝Pygame101
范例12-09:開發第 一個Pygame程序102
范例12-10:處理鍵盤事件103
范例12-11:在全屏顯示模式和非全屏顯示模式之間進行切換104
范例12-12:顯示指定樣式文字104
范例12-13:實現一個三原色顏色滑動條效果105
范例12-14:隨機在屏幕上繪制點106
范例12-15:隨機在屏幕中繪制各種多邊形107
12.3 Pygame游戲開發高級實戰108
范例12-16:開發一個俄羅斯方塊游戲108
范例12-17:仿微信飛機游戲115
范例12-18:簡單的貪吃蛇游戲117
范例12-19:推箱子游戲120
范例12-20:吃蘋果游戲123
范例12-21:簡易跑酷游戲125
范例12-22:小貓吃魚游戲128
范例12-23:分析官網的坦克大戰游戲129
范例12-24:兩種貪吃蛇游戲方案132
范例12-25:簡易俄羅斯方塊游戲139
12.4 Cocos2d游戲開發實戰140
范例12-26:第 一個Cocos2d程序140
范例12-27:創建層141
范例12-28:在層中添加事件142
范例12-29:在層中添加動作143
范例12-30:在層中使用鼠標按鍵事件144
范例12-31:使用地圖145
范例12-32:2048游戲145
范例12-33:貪吃蛇游戲147
范例12-34:水果連連看游戲148
范例12-35:AI智能貪吃蛇方案149
范例12-36:AI智能五子棋游戲152
第 13章 數據可視化實戰156
13.1 使用Matplotlib157
范例13-01:安裝Matplotlib157
范例13-02:繪制散點圖158
范例13-03:繪制一個簡單的折線圖159
范例13-04:設置標簽文字和線條粗細160
范例13-05:繪制指定樣式的散點圖160
范例13-06:繪制柱狀圖161
范例13-07:繪制有說明信息的柱狀圖162
范例13-08:繪制一個比較美觀的柱狀圖163
范例13-09:繪制多幅子圖165
范例13-10:在一個坐標系中繪制兩個折線圖166
范例13-11:使用正弦函數和余弦函數繪制曲線167
范例13-12:使用Matplotlib的默認配置繪圖167
范例13-13:繪制隨機漫步圖168
范例13-14:繪制3D圖表170
范例13-15:繪制波浪圖171
范例13-16:繪制散點圖171
范例13-17:繪制等高線圖171
范例13-18:繪制餅狀圖172
范例13-19:大數據分析2014年最高溫度和最低溫度173
范例13-20:在tkinter中使用Matplotlib繪制圖表174
13.2 使用庫pygal175
范例13-21:安裝庫pygal176
范例13-22:使用pygal模擬擲骰子176
范例13-23:模擬同時擲兩個骰子177
13.3 讀寫處理CSV文件178
范例13-24:輸出CSV文件中的日期和標題178
范例13-25:將數據保存為CSV格式179
范例13-26:讀取指定CSV文件的文件頭179
范例13-27:輸出CSV文件的文件頭和對應位置180
范例13-28:輸出CSV文件中每天的最高氣溫180
范例13-29:根據CSV文件數據繪制圖表181
范例13-30:提取CSV數據并保存到MySQL數據庫181
范例13-31:提取CSV數據并保存到SQLite數據庫184
13.4 使用庫pandas185
范例13-32:安裝庫pandas并測試是否安裝成功185
范例13-33:讀取并顯示CSV文件中的前3條數據186
范例13-34:更加規整地讀取并顯示CSV文件中的前3條數據186
范例13-35:讀取并顯示CSV文件中的某列數據187
范例13-36:用統計圖表展示CSV中的某列數據187
范例13-37:選擇指定數據188
范例13-38:顯示CSV文件中某列和某行數據188
范例13-39:在圖表中統計顯示CSV文件中的出現次數前10名信息191
范例13-40:統計文件bikes.csv中每個月的騎行數據192
范例13-41:輸出某街道前5天的騎行數據192
范例13-42:使用時間序列功能193
范例13-43:獲取某一天是星期幾193
范例13-44:統計周一到周日每天的騎行數據193
范例13-45:使用Matplotlib圖表統計周一到周日每天的騎行數據194
范例13-46:使用Matplotlib統計某區域的全年天氣數據194
范例13-47:輸出CSV文件中的全部天氣信息195
13.5 使用庫NumPy195
范例13-48:安裝庫NumPy并創建一個2×3的二維數組196
范例13-49:索引數組中的元素196
范例13-50:使用內置函數操作數組196
范例13-51:使用arange()函數創建數組并進行迭代197
范例13-52:數組轉置和修改197
范例13-53:返回展開為一維數組的副本197
范例13-54:使用字符串函數198
范例13-55:使用正弦、余弦和正切函數199
范例13-56:使用算術函數實現四則運算199
范例13-57:從給定數組的元素中沿指定軸返回最小值和最大值200
范例13-58:使用函數sort()實現快速排序200
范例13-59:使用函數byteswap()實現字節交換201
范例13-60:使用函數empty()返回一個矩陣202
范例13-61:在NumPy中使用Matplotlib202
范例13-62:使用Matplotlib繪制正弦波圖203
范例13-63:使用Matplotlib繪制直方圖203
第 14章 Flask Web開發實戰204
14.1 Flask Web初級實戰205
范例14-01:安裝Flask205
范例14-02:第 一個Flask Web程序205
范例14-03:使用PyCharm開發Flask程序206
范例14-04:傳遞URL參數208
范例14-05:使用GET請求獲取URL參數208
范例14-06:使用cookie跟蹤用戶行為209
范例14-07:使用Flask-Script擴展增強程序功能210
范例14-08:使用模板211
范例14-09:使用Flask-Bootstrap
擴展212范例14-10:使用Flask-Moment
擴展本地化日期和時間214
范例14-11:使用Flask-WTF擴展處理Web表單215
范例14-12:文件上傳系統217
范例14-13:用戶注冊登錄系統218
范例14-14:使用Flask-SQLAlchemy管理數據庫220
范例14-15:使用Flask-Mail 擴展發送電子郵件222
范例14-16:使用SendGrid發送郵件225
14.2 Flask Web高級實戰227
范例14-17:Python+Flask+MySQL開發信息發布系統227
范例14-18:圖書借閱管理系統230
范例14-19:Flask+TinyDB實現個人日志系統235
范例14-20:使用Peewee+Flask+MySQL開發一個在線留言系統240
范例14-21:使用Flask+MySQL
開發一個信息發布系統241
第 15章 Django Web開發實戰245
15.1 Django Web初級實戰246
范例15-01:安裝Django246
范例15-02:第 一個Django項目246
范例15-03:在URL中傳遞參數248
范例15-04:使用模板250
范例15-05:使用表單251
范例15-06:實現基本的數據庫操作252
15.2 Django Web高級實戰253
范例15-07:使用Django后臺管理系統開發一個博客系統253
范例15-08:開發一個新聞聚合系統256
范例15-09:開發一個在線商城系統262
范例15-10:智能書簽管理系統270
范例15-11:智能新聞發布系統274
范例15-12:智能圖書借閱系統277
范例15-13:Django+ Vue在線聊天室系統280
15.3 使用庫Mezzanine281
范例15-14:使用Mezzanine開發一個內容管理系統281
范例15-15:基于Cartridge的購物車程序283
范例15-16:在線BBS論壇系統285
第 16章 三維立體程序開發實戰290
16.1 使用Matplotlib繪制三維圖形291
范例16-01:繪制一個簡單的3D圖形291
范例16-02:繪制3D曲線291
范例16-03:繪制3D輪廓圖292
范例16-04:繪制3D直方圖293
范例16-05:繪制3D網狀線293
范例16-06:繪制3D三角面片圖293
范例16-07:繪制3D散點圖294
范例16-08:繪制3D文字295
范例16-09:繪制3D條形圖296
范例16-10:繪制3D曲面圖296
范例16-11:繪制3D散點圖297
范例16-12:繪制混合圖298
范例16-13:繪制子圖298
范例16-14:繪制3D坐標系299
16.2 使用OpenGL繪制三維圖形300
范例16-15:安裝PyOpenGL301
范例16-16:第 一個PyOpenGL程序301
范例16-17:點線面的繪制302
范例16-18:繪制平方曲線304
范例16-19:繪制立方曲線305
范例16-20:繪制藝術圖像306
范例16-21:繪制不同的線條307
范例16-22:繪制平滑陰影三角形308
范例16-23:渲染一個簡單的立方體309
范例16-24:實現燈光渲染309
范例16-25:燈光渲染陳列茶壺310
范例16-26:控制旋轉物體313
范例16-27:實現一個簡單的動畫313
范例16-28:實現旋轉復雜圖形的動畫314
范例16-29:實現一個簡單的3D游戲315
范例16-30:移動的3D立方體319
范例16-31:飛翔的立方體世界320
16.3 使用Panda3D繪制三維圖形321
范例16-32:安裝Panda3D并
創建第 一個Panda3D程序321
范例16-33:熊貓游戲324
范例16-34:迷宮中的小球游戲324
范例16-35:飛船大作戰游戲328
范例16-36:拳擊賽游戲330
范例16-37:超級大恐龍331
范例16-38:熊貓游樂場游戲332
范例16-39:魔幻迪廳游戲332
范例16-40:魔幻螢火蟲之夜333
范例16-41:奔跑的精靈333
第 17章 Python算法實戰334
17.1 常用的算法思想實戰335
范例17-01:使用遞歸函數創建質數335
范例17-02:實現拓撲排序335
范例17-03:使用分治算法求順序表的最大值335
范例17-04:判斷某個元素是否在其中336
范例17-05:找出一組序列中的第k小的元素336
范例17-06:使用回溯法求集合{1, 2, 3, 4}的所有子集337
范例17-07:獲取[1,2,3,4]的所有排列338
范例17-08:回溯法的8“皇后”問題339
范例17-09:使用回溯法解決迷宮問題340
范例17-10:使用回溯法解決背包問題341
范例17-11:找出從正整數1,2,3…n中任取r個數的所有組合342
范例17-12:使用回溯法實現圖的遍歷343
范例17-13:使用回溯法解決旅行者交通費用問題344
范例17-14:使用回溯法解決圖的著色問題346
范例17-15:實現 a、b、c、d 4個元素的全排列347
范例17-16:解決選排列問題348
范例17-17:解決最佳作業調度問題350
范例17-18:最長公共子序列351
范例17-19:爬樓梯問題352
范例17-20:使用窮舉法計算24點353
范例17-21:窮舉指定長度的所有字符串353
范例17-22:使用窮舉法計算平方根354
范例17-23:解決一個數學問題354
范例17-24:使用遞歸法計算斐波那契數列的第n項355
范例17-25:使用遞歸法計算兩個數的乘積355
范例17-26:計算n的階乘356
范例17-27:使用遞歸算法解決“漢諾塔”問題356
范例17-28:利用遞歸算法獲取
斐波那契數列前n項的值358
范例17-29:利用切片遞歸方式查找數據358
范例17-30:順時針90°調換二維數組中的數據359
范例17-31:換零錢的問題359
范例17-32:使用遞歸算法實現二分法查找360
范例17-33:小球彈跳遞歸計算距離360
范例17-34:深度優先與廣度優先遍歷的遞歸實現360
17.2 排序操作算法實戰362
范例17-35:實現快速排序362
范例17-36:實現合并排序363
范例17-37:使用遞歸算法實現快速排序363
范例17-38:實現冒泡排序363
范例17-39:實現從大到小的冒泡排序364
范例17-40:冒泡排序的另外方案364
范例17-41:冒泡排序的降序排列365
范例17-42:實現基本的快速排列366
范例17-43:實現插入排序366
范例17-44:實現無序數據的插入排序367
范例17-45:實現固定數據的插入排序367
范例17-46:排序隨機生成的0~100的數值368
范例17-47:實現選擇排序368
范例17-48:實現直接選擇排序369
范例17-49:實現選擇排序的操作步驟369
范例17-50:選擇排序和Python
內置函數的效率對比370
范例17-51:使用選擇排序處理字符371
范例17-52:排序處理多個隊列372
范例17-53:使用堆排序372
范例17-54:使用堆排序處理數據373
范例17-55:將數組按照堆輸出374
范例17-56:在堆內實現任意查找374
范例17-57:實現最小堆375
范例17-58:使用堆進行排序376
范例17-59:實現大頂堆排序377
范例17-60:實現堆排序的3種方式378
范例17-61:實現基數排序379
范例17-62:實現桶排序380
范例17-63:實現計數排序380
范例17-64:實現希爾排序381
范例17-65:展示希爾排序的步驟381
范例17-66:利用希爾排序排列一個列表382
范例17-67:實現折半插入排序382
范例17-68:實現歸并排序383
范例17-69:使用歸并排序處理指定列表384
范例17-70:歸并排序的另外解決方案384
范例17-71:使用歸并排序處理兩個列表385
范例17-72:浮點數的歸并排序385
范例17-73:使用折半查找算法386
范例17-74:展示歸并排序的處理步驟387
17.3 經典數據結構開發實戰387
范例17-75:漢諾塔問題387
范例17-76:簡單的爬樓梯問題387
范例17-77:最近點對問題388
范例17-78:從數組中找出指定和的數值組合389
范例17-79:找零問題390
范例17-80:馬踏棋盤391
范例17-81:渡過問題392
范例17-82:1000以內的完全數393
范例17-83:多進程驗證哥德巴赫猜想394
范例17-84:高斯消元法解線性方程組395
范例17-85:歌星大獎賽398
范例17-86:捕魚和分魚398
范例17-87:平分7筐魚399
范例17-88:百錢買百雞400