課程簡介
由于 Python 在深度學(xué)習(xí)、機(jī)器學(xué)習(xí)等領(lǐng)域的廣泛使用,Python 一躍成為人工智能時代的“網(wǎng)紅”語言。無論將來從事 Web 相關(guān)開發(fā),還是做人工智能方面的研究,學(xué)會 Python 都將大有益處。本次課程將重點講解Pyhton的進(jìn)階開發(fā),我們將從深入Python這門語言的底層結(jié)構(gòu)學(xué)習(xí),到使用Python高級語法實現(xiàn)業(yè)務(wù)功能。講師在每個章節(jié)后都設(shè)置了動手實操項目,幫助學(xué)員更好的理解知識點。
目標(biāo)收益
1 能夠編寫具有Python風(fēng)格的代碼
2 掌握裝飾器、魔術(shù)方法、 鴨子類型、動態(tài)屬性等Python高級概念
3 使用Python開發(fā)后端程序的最佳實踐
培訓(xùn)對象
1 了解數(shù)據(jù)結(jié)構(gòu)和算法的基本概念
2 了解Python語言的基礎(chǔ)語法:如變量賦值、判斷循環(huán)、函數(shù)、類、文件操作、異常
3 熟悉常見的操作系統(tǒng)和網(wǎng)絡(luò)協(xié)議如:Linux、HTTP、TCP
課程大綱
如何寫Python風(fēng)格的代碼 |
1 Python數(shù)據(jù)模型(1小時) 1.1 案例:從一個“不像Python”的Python程序說起 1.2 Python風(fēng)格編程之魔術(shù)方法 1.3 Python與C++的主要區(qū)別 |
數(shù)據(jù)結(jié)構(gòu) |
2 序列(1小時) 2.1 序列的內(nèi)存分布及其包含的數(shù)據(jù)類型 2.2 列表元組在實際運行中的效率差異? 2.3 Python風(fēng)格編程之推導(dǎo)式 2.4 高階函數(shù)filter與map(案例:MapReduce模式與Google的三駕馬車) 2.5 序列排序與均值濾波算法 2.6 數(shù)組與Numpy(案例:利用 Numpy和數(shù)組分別進(jìn)行矩陣操作,并分析性能優(yōu)劣) 2.7 雙向隊列(案例:采用消息隊列機(jī)制避免數(shù)據(jù)爆發(fā)增長,導(dǎo)致數(shù)據(jù)庫崩潰) 3 字典和集合(0.5小時) 3.1 映射與hash的內(nèi)存分布 3.2 字典推導(dǎo)式 3.3 defaultdict與UserDict(案例:利用字典實現(xiàn)復(fù)雜映射需求的存儲) 4 文本和數(shù)字(0.5小時) 4.1 Unicode編碼與解碼 4.2 編解碼異常處理--解決亂碼問題最佳實踐 4.3 正則表達(dá)式(案例:使用Python進(jìn)行數(shù)據(jù)預(yù)處理) 4.4 精確的浮點數(shù)計算 4.5 正確使用Python解析網(wǎng)絡(luò)協(xié)議封包 |
深入函數(shù) |
5 函數(shù)(3小時) 5.1 Python風(fēng)格編程之匿名函數(shù) 5.2 動態(tài)類型語言的參數(shù)傳遞與靜態(tài)語言的主要差異 5.3 函數(shù)式編程 5.4 Python風(fēng)格編程之functools 5.5 閉包與裝飾器(案例:利用裝飾器簡化被修飾函數(shù)復(fù)雜度) 5.6 大型框架必備技能之疊放裝飾器(案例:利用裝飾器實現(xiàn)復(fù)雜函數(shù)定義) 5.7 (案例)Django中的動態(tài)屬性源碼分析 5.8 (案例)Django中的裝飾器源碼分析 |
面向?qū)ο? |
6 對象的引用和回收(1小時) 6.1 變量賦值的本質(zhì)--Python虛擬機(jī)如何管理內(nèi)存分配 6.2 對象的“相對”可變與不可變(案例:利用字節(jié)碼分析Python性能瓶頸) 6.3 深拷貝與淺拷貝 (案例:對Python對象進(jìn)行錯誤賦值導(dǎo)致的線上bug一例) 6.4 == 與 is 的區(qū)別 6.5 GC(案例:CPython垃圾回收機(jī)制剖析) 6.6 調(diào)試工具 pdb cprofile 7 Python風(fēng)格的對象(2小時) 7.1 __new__與 __init__魔術(shù)方法的正確用法(案例:利用__new__實現(xiàn)單例設(shè)計模式) 7.2 classmethod 與 staticmethod類中必備的裝飾器 7.3 Python風(fēng)格編程之鴨子類型 (案例:實現(xiàn)復(fù)雜的自定義數(shù)據(jù)模型) 7.4 Python風(fēng)格編程之黑魔法 7.5 切片處理__getitem__ 7.6 接口(案例:為Python定義“接口”) 7.7 協(xié)議與猴子補丁 7.8 抽象基類collections.abc 7.9 子類化內(nèi)置類型 7.10 多繼承與MRO(案例:Django的多繼承實現(xiàn)原理,及源代碼解析) 7.11 (案例)基于pyvmomi(https://github.com/vmware/pyvmomi) 實戰(zhàn)Python語言的高級特性 |
控制流 |
8 迭代(1小時) 8.1 迭代與遞歸 8.2 可迭代對象與迭代器 8.3 生成器 8.4 Python風(fēng)格編程之上下文管理器 8.5 協(xié)程與yield(案例:Python協(xié)程的演化過程) 9 并發(fā)編程(2小時) 9.1 多進(jìn)程、多線程與協(xié)程 (案例:多進(jìn)程與多線程模型性能差異比較) 9.2 使用future模塊處理Python并發(fā) 9.3 使用底層threading庫管理多線程 9.4 多進(jìn)程、多線程間的通信 9.5 協(xié)程與asyncio包 9.6 CPython與GIL,Python性能的阿喀琉斯之踵 |
元編程 |
10 動態(tài)屬性(1小時) 10.1案例:Django中的動態(tài)屬性 10.2 屬性描述符 10.3 元類 第七部分 Web框架 11 框架工具及設(shè)計模式(1小時) 11.1 MVC與MVVM 模式在Web后端開發(fā)的作用 11.2 案例:通過路由規(guī)則理解偏函數(shù) 11.3 主流框架Django與fastAPI對比 11.4 案例:基于Python的框架技術(shù)快速實現(xiàn)RESTapi的創(chuàng)建和認(rèn)證 12 Django Admin快速創(chuàng)建在線表單服務(wù)(1小時) 12.1 利用ORM框架加速數(shù)據(jù)建模 12.2基于函數(shù)和基于類定義視圖 12.3 基于Admin模塊實現(xiàn)用戶認(rèn)證 12.4 如何解決CSRF跨域請求的安全問題 13 優(yōu)化代碼 -- 好代碼的一般特征(1小時) 13.1 契約式設(shè)計 13.2 防錯性設(shè)計 13.3 組合和繼承 13.4 軟件的正交性 13.5 Python中可實現(xiàn)的SOLID原則 13.6(案例)用裝飾器改善代碼 13.7 (案例)描述符的分離及如何從對象中獲取更多信息 14 Python 與 數(shù)據(jù)分析 (1小時) 14.1 利用Pandas實現(xiàn)確實數(shù)據(jù)的處理與預(yù)測 14.2 如何基于pandas加速Python多維數(shù)組操作 14.3 常見機(jī)器學(xué)習(xí)算法與K-means聚類算法的實現(xiàn)(基于Scikit-Learn與手寫) 14.4 深度神經(jīng)網(wǎng)絡(luò)與數(shù)據(jù)分類 15 發(fā)布一個完整的Python代碼(1小時) 15.1 使用pyvenv 建立虛擬環(huán)境 15.2 通過pip及配置文件解決特定版本的軟件包依賴關(guān)系 15.3 Python異常處理機(jī)制,及如何使用錯誤處理拋出友好的異常信息 15.4 使用nginx+gunicorn部署生產(chǎn)環(huán)境的Web服務(wù) 15.5 如何將Python應(yīng)用程序打包為Docker鏡像 15.6 如何將將Python程序發(fā)布為windows下的可執(zhí)行文件(EXE) 15.7 基于Gooey實現(xiàn)Python的GUI界面 16 精進(jìn)Python 16.1 推薦讀物 16.2 GitHub中,優(yōu)秀的Python項目 16.3 GitHub中,優(yōu)秀的學(xué)習(xí)資源 |
如何寫Python風(fēng)格的代碼 1 Python數(shù)據(jù)模型(1小時) 1.1 案例:從一個“不像Python”的Python程序說起 1.2 Python風(fēng)格編程之魔術(shù)方法 1.3 Python與C++的主要區(qū)別 |
數(shù)據(jù)結(jié)構(gòu) 2 序列(1小時) 2.1 序列的內(nèi)存分布及其包含的數(shù)據(jù)類型 2.2 列表元組在實際運行中的效率差異? 2.3 Python風(fēng)格編程之推導(dǎo)式 2.4 高階函數(shù)filter與map(案例:MapReduce模式與Google的三駕馬車) 2.5 序列排序與均值濾波算法 2.6 數(shù)組與Numpy(案例:利用 Numpy和數(shù)組分別進(jìn)行矩陣操作,并分析性能優(yōu)劣) 2.7 雙向隊列(案例:采用消息隊列機(jī)制避免數(shù)據(jù)爆發(fā)增長,導(dǎo)致數(shù)據(jù)庫崩潰) 3 字典和集合(0.5小時) 3.1 映射與hash的內(nèi)存分布 3.2 字典推導(dǎo)式 3.3 defaultdict與UserDict(案例:利用字典實現(xiàn)復(fù)雜映射需求的存儲) 4 文本和數(shù)字(0.5小時) 4.1 Unicode編碼與解碼 4.2 編解碼異常處理--解決亂碼問題最佳實踐 4.3 正則表達(dá)式(案例:使用Python進(jìn)行數(shù)據(jù)預(yù)處理) 4.4 精確的浮點數(shù)計算 4.5 正確使用Python解析網(wǎng)絡(luò)協(xié)議封包 |
深入函數(shù) 5 函數(shù)(3小時) 5.1 Python風(fēng)格編程之匿名函數(shù) 5.2 動態(tài)類型語言的參數(shù)傳遞與靜態(tài)語言的主要差異 5.3 函數(shù)式編程 5.4 Python風(fēng)格編程之functools 5.5 閉包與裝飾器(案例:利用裝飾器簡化被修飾函數(shù)復(fù)雜度) 5.6 大型框架必備技能之疊放裝飾器(案例:利用裝飾器實現(xiàn)復(fù)雜函數(shù)定義) 5.7 (案例)Django中的動態(tài)屬性源碼分析 5.8 (案例)Django中的裝飾器源碼分析 |
面向?qū)ο? 6 對象的引用和回收(1小時) 6.1 變量賦值的本質(zhì)--Python虛擬機(jī)如何管理內(nèi)存分配 6.2 對象的“相對”可變與不可變(案例:利用字節(jié)碼分析Python性能瓶頸) 6.3 深拷貝與淺拷貝 (案例:對Python對象進(jìn)行錯誤賦值導(dǎo)致的線上bug一例) 6.4 == 與 is 的區(qū)別 6.5 GC(案例:CPython垃圾回收機(jī)制剖析) 6.6 調(diào)試工具 pdb cprofile 7 Python風(fēng)格的對象(2小時) 7.1 __new__與 __init__魔術(shù)方法的正確用法(案例:利用__new__實現(xiàn)單例設(shè)計模式) 7.2 classmethod 與 staticmethod類中必備的裝飾器 7.3 Python風(fēng)格編程之鴨子類型 (案例:實現(xiàn)復(fù)雜的自定義數(shù)據(jù)模型) 7.4 Python風(fēng)格編程之黑魔法 7.5 切片處理__getitem__ 7.6 接口(案例:為Python定義“接口”) 7.7 協(xié)議與猴子補丁 7.8 抽象基類collections.abc 7.9 子類化內(nèi)置類型 7.10 多繼承與MRO(案例:Django的多繼承實現(xiàn)原理,及源代碼解析) 7.11 (案例)基于pyvmomi(https://github.com/vmware/pyvmomi) 實戰(zhàn)Python語言的高級特性 |
控制流 8 迭代(1小時) 8.1 迭代與遞歸 8.2 可迭代對象與迭代器 8.3 生成器 8.4 Python風(fēng)格編程之上下文管理器 8.5 協(xié)程與yield(案例:Python協(xié)程的演化過程) 9 并發(fā)編程(2小時) 9.1 多進(jìn)程、多線程與協(xié)程 (案例:多進(jìn)程與多線程模型性能差異比較) 9.2 使用future模塊處理Python并發(fā) 9.3 使用底層threading庫管理多線程 9.4 多進(jìn)程、多線程間的通信 9.5 協(xié)程與asyncio包 9.6 CPython與GIL,Python性能的阿喀琉斯之踵 |
元編程 10 動態(tài)屬性(1小時) 10.1案例:Django中的動態(tài)屬性 10.2 屬性描述符 10.3 元類 第七部分 Web框架 11 框架工具及設(shè)計模式(1小時) 11.1 MVC與MVVM 模式在Web后端開發(fā)的作用 11.2 案例:通過路由規(guī)則理解偏函數(shù) 11.3 主流框架Django與fastAPI對比 11.4 案例:基于Python的框架技術(shù)快速實現(xiàn)RESTapi的創(chuàng)建和認(rèn)證 12 Django Admin快速創(chuàng)建在線表單服務(wù)(1小時) 12.1 利用ORM框架加速數(shù)據(jù)建模 12.2基于函數(shù)和基于類定義視圖 12.3 基于Admin模塊實現(xiàn)用戶認(rèn)證 12.4 如何解決CSRF跨域請求的安全問題 13 優(yōu)化代碼 -- 好代碼的一般特征(1小時) 13.1 契約式設(shè)計 13.2 防錯性設(shè)計 13.3 組合和繼承 13.4 軟件的正交性 13.5 Python中可實現(xiàn)的SOLID原則 13.6(案例)用裝飾器改善代碼 13.7 (案例)描述符的分離及如何從對象中獲取更多信息 14 Python 與 數(shù)據(jù)分析 (1小時) 14.1 利用Pandas實現(xiàn)確實數(shù)據(jù)的處理與預(yù)測 14.2 如何基于pandas加速Python多維數(shù)組操作 14.3 常見機(jī)器學(xué)習(xí)算法與K-means聚類算法的實現(xiàn)(基于Scikit-Learn與手寫) 14.4 深度神經(jīng)網(wǎng)絡(luò)與數(shù)據(jù)分類 15 發(fā)布一個完整的Python代碼(1小時) 15.1 使用pyvenv 建立虛擬環(huán)境 15.2 通過pip及配置文件解決特定版本的軟件包依賴關(guān)系 15.3 Python異常處理機(jī)制,及如何使用錯誤處理拋出友好的異常信息 15.4 使用nginx+gunicorn部署生產(chǎn)環(huán)境的Web服務(wù) 15.5 如何將Python應(yīng)用程序打包為Docker鏡像 15.6 如何將將Python程序發(fā)布為windows下的可執(zhí)行文件(EXE) 15.7 基于Gooey實現(xiàn)Python的GUI界面 16 精進(jìn)Python 16.1 推薦讀物 16.2 GitHub中,優(yōu)秀的Python項目 16.3 GitHub中,優(yōu)秀的學(xué)習(xí)資源 |