Python 學習路線 by 魚皮。
原創不易,請勿抄襲,違者必究!
大家好,我是魚皮,肝了十天左右的 Python 學習路線終於來了~
和之前一樣,在看路線前,建議大家先通過以下視頻了解幾個問題:
- Python 為什麼這麼火?
- 為什麼都在說學 Python 找不到工作?Python 真香么?
- 我要學 Python 么?
- 怎麼快速學習?
視頻地址:https://www.bilibili.com/video/BV133411C7u5/
點擊文末閱讀原文可直接跳轉
Python 為什麼火了?
有很多原因,列舉幾點:
- 語法簡單易學,其他語言 5 行代碼才能實現的東西,python 一行搞定!可以少寫很多代碼,因此不少同學拿 Python 刷算法題(但注意要理解算法本身哦)。
- 類庫生態豐富,想做什麼功能基本都有現成的代碼,拿來直接用就行,無比方便!
- 免費開源,感興趣、有能力的同學可以自己去研究源碼。
- 其他特性,比如跨平台、可擴展等。
- 作為數據科學、人工智能的首選語言,踩到了時代的風口。
於是乎,Python 被推向了神壇,甚至在 2021 年 10 月的編程語言排行榜中,Python 登上了第一位!
TIOBE 編程語言排行榜
但就是這樣一門 「永遠的神」 的編程語言,卻在網上被口口相傳說:學了 Python 找不到工作!
哎,為啥呢?
為什麼 Python 不適合找工作?
一方面是,大多數的企業,都不用 Python 來開發應用。
因為 Python 的運行速度太慢了,別說跟底層的 C++ 比了,Java 都能甩它幾條街!而且這和語言本身的設計實現有關,所以哪怕你再出什麼技術去優化它的性能,也終究有個瓶頸,世界上最好的語言 PHP 也是一樣。
而對企業來說,性能 會直接影響用戶體驗和機器成本,尤其是在這個信息爆炸、大家都在追求性能的時代,Python 在應用開發領域的地位就很尷尬,而開發崗又正好是程序員中佔比極高的崗位。
另一方面,雖然 Python 的應用場景很多、相關崗位也不少,又是什麼 AI、數據科學的主流語言是吧,未來很美好。但是,這些前沿技術的難點並不是 Python 語言的代碼本身,而是算法和思想。Python 只是一個調包、把你思想表達出來的工具而已。所以這些前沿崗位的門檻遠比你入門 Python、或者聽培訓機構畫餅時要高的多,算法崗位、大廠的產品崗真就是神仙打架,而且研究生居多。
學習目標
既然這樣,那我還要不要學 Python 呢?
我認為:必須要學!
但是,一定要先思考自己的學習目標,目標不同,對 Python 的學習態度和投入的時間也不同。
如果想找開發崗位的工作,像上面說的,不建議把 Python 作為你的主語言,而是把它當做你的副武器。只需簡單學學 Python 基礎,就可以編寫 Python 腳本來自動化辦公、提高工作效率、做一些小工具了,性價比很高。
如果說編程語言是工具,那 Python 是對這句話的完美詮釋。 多會用一個神器,誰不愛呢?
如果你想找其他崗位的工作,比如運維、測試、數據分析、產品經理、大數據、爬蟲、人工智能、圖像處理、多媒體處理、算法研究,當然也可以,只是如果以這些崗位為目標,除了要打好 Python 基礎外,更重要的是理解對應領域的思想、方法和實踐,而不是只會引庫調包。
如果你是初學編程或者出於好奇學編程,我也建議你學 Python,好玩、能學下去、能培養興趣,這些對初學者非常重要,有了興趣之後,再學別的語言就會如魚得水。
學習建議
對於初學者和非 Python 崗位的從業者,就把 Python 當工具學,了解下基礎語法和常用類庫,需要寫 Python 腳本時,能利用搜索引擎和文檔寫出(或者複製)代碼就行。只要你學過其他編程語言,上手 Python 真的都很容易,3 - 7 天就能學會。
建議學習時多寫些小例子,比如 Python 處理表格、Python 處理 PDF 等,感受 Python 類庫的強大就完事兒~
學習路線大綱
摺疊了一部分,還是老長,公眾號【程序員魚皮】回復【python】獲取思維導圖:
魚皮 - Python 學習路線
學習路線
基礎
- Python 安裝
- 開發工具 PyCharmSublimeVS Code
- 變量 定義變量關鍵字命名規則基本數據類型類型轉換
- 運算符和表達式
- 流程控制 條件分支循環
- 基本數據結構 字符串列表元組集合字典
- 函數 定義參數傳遞作用域lambda 表達式常用內置函數
- ⭐ 面向對象編程 類和對象三大特性 封裝 self屬性方法 類方法實例方法靜態方法 訪問控制 繼承 單繼承多繼承 多態 方法重寫 運算符重載裝飾器反射
- 模塊 導入模塊常用模塊 文件處理日期時間
- 包 導入包生成包
- 異常處理 捕獲異常try ... else ... finally 結構自定義異常
- 文件操作 文件開閉文件讀寫
進階
- 函數進階 閉包匿名函數生成器函數裝飾器高階函數
- 正則表達式
- 數據庫編程 數據庫基礎SQL 編寫查詢 聚合分組關聯排序 事務數據庫設計數據庫調優
- 並發編程 同步和異步阻塞和非阻塞多線程多進程協程並發類庫
- 網絡編程 網絡基礎(七層模型、IP)網絡協議(TCP、UDP、HTTP、HTTPS、FTP、DNS)WebSocket
web 開發
- Django 框架 安裝與 DemoMVT 分層模型 數據庫基礎ORM 單表查詢多表查詢聚合查詢 視圖模板 模板語法靜態資源 路由Django Admin 管理工具測試會話鑒權文件上傳中間件高級特性 分頁緩存 本地緩存Redis 分佈式緩存 序列化信號celery 任務調度 Restful API 開發 概念數據序列化Django Rest Framework 部署項目實戰
- 前端基礎 HTMLCSSJavaScript
- Flask 框架
爬蟲
- 概念
- 合法性
- 數據抓取 常用網絡協議(http / https)概念請求 請求頭請求參數請求類型 響應 響應頭響應參數 requests 模塊urllib 模塊模擬登陸靜態 / 動態網站抓取無頭瀏覽器 seleniumpuppeteer
- 數據解析 常用標籤BeautifulSoup正則表達式xpath
- 數據導出 文件 ExcelCSV 數據庫 MongoDBMySQL 中間件 Redis
- Scrapy 框架 核心概念 命令行工具SpidersSelectorsItemsItem Loaders管道Scrapy ShellLink Extractors 調度器分佈式爬虫部署
- 並發異步爬蟲 aioHttpasyncio
- 高級 IP 代理驗證碼識別APP 抓取增量式爬蟲
- 項目實戰
- 反爬蟲 請求頭限制驗證碼黑白名單封禁 IP數據加密數據混淆行為分析
自動化運維
- Linux 環境
- Shell 腳本編寫
- 腳本管理
- 腳本發佈
- Python 運維庫
- 常用運維工具
數據分析(數據科學)
- 環境搭建 AnacondaCondaMinicondaJupyter Notebook
- 常用數據結構
- 常用類庫 NumPy 數組索引切片多維數組函數 Pandas SeriesDataFrame索引對齊函數統計
- 數據處理 數據清洗層次化索引數據連接數據合併分組聚合軸向旋轉
- 數據可視化 matplotlibseabornpyechart
算法(人工智能)
魚皮自己沒怎麼接觸人工智能,結合網上很多大神的資料整理而成,也有一定參考意義。
- 數學基礎 高等數學線性代數概率論統計分析
- 機器學習 特徵工程模型 模型分類模型評估模型訓練模型調優 常用算法 監督與無監督學習回歸(有監督) 線性回歸決策樹集成算法 分類(有監督) 邏輯回歸決策樹支持向量機集成算法貝葉斯算法 聚類(無監督) k-meansdbscan 降維 主成分分析線性判別分析 進階 GBDT 提升算法lightgbmEM 算法隱馬爾科夫模型 多因子模型常用庫 Scikit-learn 量化交易策略
- 深度學習 數據預處理算法 神經網絡卷積神經網絡遞歸神經網絡對抗生成網絡序列網絡模型 常用算法框架和平台 Tenserflow2PytorchKerasCaffe
- 自然語言處理
- 圖像處理
- 計算機視覺
常用類庫
Python 能被廣泛應用,很大程度上是因為其豐富的類庫,就是他人提前寫好並封裝的代碼。基本你要做什麼東西都能找到對應的類庫,直接看文檔用就行了,大大提高開發效率!
開源項目 awesome-python-cn(地址:https://github.com/jobbole/awesome-python-cn) 和 awesome-python(地址:https://github.com/vinta/awesome-python)已經幫大家整理了各方向的 Python 類庫,數量非常多。魚皮在此基礎上篩選了一些相對優質的庫,分享給大家。
通用
日期處理
- delorean:日期處理庫
- pendulum:日期時間操作庫
- dateutil:對標準 datetime 模塊的強大擴展
終端優化
- IPython:功能豐富的交互式 Python 解析器
- Jupyter Notebook:基於網頁的用於交互計算的應用程序
- Prettytable:生成美觀的 ASCII 格式的表格
- Colorama:讓終端具有顏色
- bashplotlib:在終端中進行基本繪圖
- emoji:支持在 Python 終端輸出表情
- Ipyvolume:在 Jupyter notebook 中可視化 3d 體積和字形
文本處理
- FlashText:高效的文本查找替換庫
- furl:url 處理庫
- pypinyin:漢字拼音轉換工具
- simplejson:JSON 編 / 解碼器
- JMESPath:JSON 查詢語法庫
其他
- Pipenv:Python 官方推薦的新一代包管理工具
- threading:自帶的線程庫
- multiprocessing:自帶的多線程庫
- Chardet:字符編碼檢測器
- logging:日誌功能
- PySnooper:Python 調試工具
- sphinx:Python 文檔生成器
- pyttsx3:文字轉語音庫
- PyWin32:提供和 windows 的交互
- shortuuid:生成唯一 uuid 的庫
- more-itertools:支持迭代操作對象
- cryptography:密碼學工具包
網絡請求 & 解析
- requests:HTTP 請求庫
- aiohttp:異步 HTTP 網絡庫
- scrapy:分佈式網頁採集框架
- pyspider:一個強大的爬蟲系統
- BeautifulSoup:從 html 或 XML 文件中提取數據的庫
- you-get:網頁視頻下載器
- wget:網頁文件下載
- musicdl:Python 音樂下載器
文件處理
- openpyxl:Excel 讀寫庫
- tablib:處理表格數據
- CSVkit:用於轉換和操作 CSV 的工具
- XlsxWriter:操作 Excel
- python-docx:操作 office word 文檔
- PyPDF2:操作 PDF 文檔
- pdfminer:從 PDF 文檔中抽取信息的工具
- xhtml2pdf:HTML 轉 PDF 工具
- WeasyPrint:可視化網頁,並支持導出為 PDF
- html2text:將 HTML 轉換為 Markdown 文檔
- xmltodict:像處理 JSON 一樣處理 XML
- moviepy:基於腳本的視頻編輯模塊
- eyeD3:操作音頻文件的工具
- pyAudioAnalysis:音頻特徵提取分析
界面開發
- pyQT:跨平台的用戶界面開發框架
- Turtle:交互式繪畫庫
- pyglet:跨平台界面及多媒體框架
- wxPython:Python 用戶界面開發工具
- Pygame:一組用來開發遊戲的 Python 模塊
- Manim:Python 數學動畫引擎
- progressbar:一個滾動條函數庫
- progress:進度條輸出
- tqdm:快速、可擴展的進度條
測試
- nose:測試框架
- faker:生成假數據
- PyAutoGUI:跨平台 GUI 自動測試模塊
- coverage:代碼覆蓋率測量
- sqlmap:自動 SQL 注入和滲透測試工具
Web 開發
- Django:Python 界最流行的 web 框架
- Django REST framework:用於開發 web api 的框架
- FastAPI:快速構建 web 應用程序
- flask:Python 微型框架
- Twisted:一個事件驅動的網絡引擎
運維
- psutil:跨平台的進程和系統工具模塊
- supervisor:進程控制管理系統
- sh:讓 Python 支持 shell 腳本
- dnspython:DNS 工具包
- scapy:數據包處理庫
- pexpect:在偽終端中控制交互程序
- paramiko:遠程連接服務
- Ansible:IT 自動化平台
- SaltStack:基礎設施自動化和管理系統
- watchdog:管理文件系統事件的 API 和 shell 工具
圖像處理 & 計算機視覺
- Pillow:圖像處理庫
- kornia:計算機視覺庫
- Opencv:開源計算機視覺庫
- Mahotas:計算機視覺和圖像處理庫
- Luminoth:計算機視覺的深度學習工具集
數據分析 & 數據科學
- NumPy:數值計算工具包
- Pandas:主流的數據分析工具
- pyecharts:基於百度 Echarts 的數據可視化庫
- Dash:快速構建 Web 數據可視化應用
- matplotlib:Python 2D 繪圖庫
- Seaborn:使用 Matplotlib 進行統計數據可視化
- python-recsys:實現推薦系統的庫
- vaex:高速大數據處理庫
- SciPy:算法和數學工具庫
- blaze:NumPy 和 Pandas 的大數據接口
- statsmodels:統計建模和計量經濟學
人工智能
- Tensorflow:谷歌開源的最受歡迎的深度學習框架
- keras:深度學習封裝庫,快速上手神經網絡
- Pytorch:具有張量和動態神經網絡,並有強大 GPU 加速能力的深度學習框架
- Caffe2:一個輕量、模塊化、可擴展的深度學習框架
- scikit-learn:基於 SciPy 構建的機器學習 Python 模塊
- PyMC:馬爾科夫鏈蒙特卡洛採樣工具
- mmdetection:深度學習目標檢測工具箱
- imbalanced-learn:不平衡學習工具包
- XGBoost:分佈式梯度增強庫
- Gym:強化學習算法的工具包
自然語言處理
- NLTK:自然語言處理工具包
- Gensim:話題建模庫
- Pattern:自然語言處理工具
- fuzzywuzzy:用於字符串模糊匹配、令牌匹配等
- TextBlob:為進行普通自然語言處理任務提供一致的 API
- PyFlux:時間序列處理庫
- jieba:中文分詞工具
大綱
(大綱圖)
崗位
- 騰訊校招 Python 相關崗位:https://join.qq.com/post.html?keyword=python
- 崗位薪資查詢:OfferShow 小程序
- 運維工程師
- Web 開發工程師(後端、全棧為主)
- 測試工程師
- 數據分析師
- 產品經理
- 算法工程師 機器學習計算機視覺NLP多媒體處理
- 大數據工程師 大數據開發數據挖掘
- 網絡爬蟲工程師
- 技術研究員
資源
視頻
零基礎
- ⭐ 千鋒教育 700 集零基礎 Python 教程:https://www.bilibili.com/video/BV1R7411F7JV(非常全面,基礎、web 開發、爬蟲、數據分析、AI 基礎都講了,例子也很豐富)
- ⭐ 黑馬程序員600集 Python 教程:https://www.bilibili.com/video/BV1ex411x7Em(比較全面,基於 Linux 環境學習,以 Python 基礎 + 面向對象為重點,還包含一部分遊戲開發)
- ⭐ Python 全棧開發教程:https://www.bilibili.com/video/BV1wD4y1o7AS(很純粹的 Python 基礎教程,案例多,適合快速入門)
- 小甲魚 -《零基礎入門學習Python》最新版:https://www.bilibili.com/video/av52080698(可惜,更新到一半就沒了。。)
- 【麻省理工學院-中文字幕版】Python 和計算機科學導論公開課:https://www.bilibili.com/video/BV1ty4y1x7xP(適合外語不錯的同學課外看,感受國外教學氛圍)
- 阿里雲 python 工程師學習:https://developer.aliyun.com/graph/python(有在線編程體驗)
- 魚皮公眾號【程序員魚皮】後台回復 Python,也有一套視頻課
其他
- Web 開發 Python Django 項目實戰教程:https://www.bilibili.com/video/BV1pq4y1W7a1Python + 微信小程序實戰開發:https://www.bilibili.com/video/BV1Xy4y1s792(挺完整,後台用的 Django 框架)
- 數據結構與算法 Python 數據結構與算法全套 100 節:https://www.bilibili.com/video/BV1uA411N7c5【北京大學】數據結構與算法Python版(完整版):https://www.bilibili.com/video/BV1VC4y1x7uv
- 爬蟲 2020 年Python爬蟲全套課程(學完可做項目):https://www.bilibili.com/video/BV1Yh411o7SzPython 爬蟲編程基礎 5 天速成:https://www.bilibili.com/video/BV12E411A7ZQ(很短的爬蟲實戰入門課)
- 數據分析 自學數據分析課程:https://www.bilibili.com/video/BV1ZM4y1u7uF(很純粹的數據分析 + 可視化課程,適合辦公黨快速上手)完整數據分析課程:https://www.bilibili.com/video/BV1vV411p7D6(數據分析 + 機器學習,很全面)Python 數據分析入門視頻合集:https://shimowendang.com/docs/36pykCPH6XCjKJcv/read
- 其他 一天搞定人臉識別項目(python+opencv):https://www.bilibili.com/video/BV1Lq4y1Z7dm Python 自動化辦公:https://www.bilibili.com/video/BV1uv411W7Fi(主要是處理 Excel)
書籍
- ⭐《Python編程:從入門到實踐》:https://www.code-nav.cn/rd/?rid=cbddf0af6064484f002658102cdbba17
- 《python學習手冊》:https://www.code-nav.cn/rd/?rid=79550af260643c8e0ce47ab84633e200
- 《笨辦法學Python3》:https://www.code-nav.cn/rd/?rid=b00064a760643bb90cbba72836995fd5
- 《Python編程快速上手》(第2版):https://book.douban.com/subject/35387685/
- 《Python Cookbook 中文版》(第3版):https://book.douban.com/subject/26381341/
- 《父與子的編程之旅》:https://www.code-nav.cn/rd/?rid=8937eaa9615519680ed81c0e3165ee65
- ⭐《Python 深度學習》https://www.code-nav.cn/rd/?rid=2d44d6c261624dd31224ed1b5841920c
- 《Python網絡爬蟲實戰》第2版:https://www.code-nav.cn/rd/?rid=b00064a7606440d40cbc2fca19192e4f
- 《Python數據科學手冊》:https://book.douban.com/subject/27667378/
- 《利用Python進行數據分析》:https://book.douban.com/subject/25779298/
- 《輕量級Django》:https://www.code-nav.cn/rd/?rid=28ee4e3e60641fd60d91fd2441418491
- ⭐ 編程導航 - 超多 Python 書籍直接免費下載 :https://www.code-nav.cn/topic/Python(選擇書籍標籤)
- Python Guide(英文):https://docs.python-guide.org/
文檔
- ⭐ Python 入門教程(菜鳥教程):https://www.runoob.com/python3/python3-tutorial.html(可以在線寫代碼練習)
- Python 入門教程(W3Cschool):https://www.w3cschool.cn/python3/(支持手機閱讀)
- Python 中文學習大本營:http://www.pythondoc.com/(一系列文檔教程的集合)
- Python 100 天:https://github.com/jackfrued/Python-100-Days
- 廖雪峰 Python 入門教程:https://www.liaoxuefeng.com/wiki/1016959663602400
- 莫煩 Python 教程:https://mofanpy.com/(包括基礎、數據處理、機器學習等,部分內容有視頻)
- Django 官方教程:https://docs.djangoproject.com/zh-hans/3.2/intro/tutorial01/
- Manim 動畫引擎教程:https://docs.manim.org.cn/shaders/
- A Byte of Python:https://python.swaroopch.com/(Python 英文入門教程)
- ⭐ 谷歌 Python 代碼規範:https://google.github.io/styleguide/pyguide.html
實戰
- ⭐ 藍橋雲課 Python 實戰合集:https://www.lanqiao.cn/courses/?fee=free&tag=Python
- 騰訊雲在線 Python 實驗:https://cloud.tencent.com/developer/labs/gallery?tagId=23
- 阿里雲 Python 入門實驗:https://developer.aliyun.com/adc/scenario/e04fe73ad95d4782aef7aecca206196e
- 華為雲沙箱實驗室:https://lab.huaweicloud.com/testList.html
- Python123:https://python123.io/index(在線編程,部分課收費)
- CheckiO 遊戲學 Python:https://py.checkio.org/
- 通過測試交互式學 Python(英文):https://github.com/gregmalcolm/python_koans
- 交互式 Python 挑戰(英文):https://github.com/donnemartin/interactive-coding-challenges
- 通過項目學 Python(英文):https://github.com/practical-tutorials/project-based-learning#python
- 通過示例交互式學 Python(英文):https://github.com/jerry-git/learn-python3
代碼
- 數據結構和算法 Python 實現:https://github.com/keon/algorithms
- 《劍指 Offer》算法面試題 Python 實現:https://github.com/JushuangQiao/Python-Offer
- 設計模式 Python 實現:http://www.pythontip.com/python-patterns/detail/abstract_factory
- Python Machine Learning 代碼:https://github.com/rasbt/python-machine-learning-book-3rd-edition
- Python 小腳本:https://github.com/RealHacker/python-gems
合集
- ⭐ GitHub Python 專區:https://github.com/topics/python
- 神經網絡和深度學習相關框架:https://github.com/ChristosChristofidis/awesome-deep-learning
- 機器學習相關庫:https://github.com/josephmisiti/awesome-machine-learning#python
- 開源 Python 應用程序大全:https://github.com/mahmoud/awesome-python-applications
- Python 類庫大全:https://github.com/vinta/awesome-python
- Python 類庫大全(中文版):https://github.com/jobbole/awesome-python-cn
- Python 異步大全:https://github.com/timofurrer/awesome-asyncio
- jupyter 相關:https://github.com/markusschanta/awesome-jupyter
- Python 書單:https://github.com/Junnplus/awesome-python-books
- Python 書單(中文版):https://github.com/jobbole/awesome-python-books
- StackOverflow Python 專區:https://stackoverflow.com/questions/tagged/python(解決問題必備)
- ⭐ 掘金 Python 專區:https://juejin.cn/tag/Python(看技術文章)
社區
- ⭐ PythonTab:https://www.pythontab.com/(中文 Python 開發者社區)
- Learnku Python 技術論壇:https://learnku.com/python
- 開源中國:https://www.oschina.net/(綜合的開源社區)
工具
- ⭐ Python 在線編程(菜鳥教程):https://c.runoob.com/compile/6/
- 騰訊雲 Python 在線手冊:https://cloud.tencent.com/developer/devdocs
- Python 在線手冊匯總:https://docs.pythontab.com/
面試題
- ⭐ 牛客 Python 專項練習:https://www.nowcoder.com/intelligentTest
- 牛客 Python 試題:https://www.nowcoder.com/search?query=python&type=question
- 牛客機器學習面試題:https://www.nowcoder.com/search?type=question&query=%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0
- 牛客機器學習筆試:https://www.nowcoder.com/search?type=paper&query=%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0
- Python 面試題整理:https://github.com/taizilongxu/interview_python(高星)
- Python 面試題整理:https://github.com/kenwoodjw/python_interview_question
- 機器學習面試題:https://geektutu.com/post/qa-ml.html
其他
- ⭐ Python 常見問題:https://docs.python.org/zh-cn/3/faq/general.html(官方提供的 )
- GitHub Python 趨勢:https://github.com/trending/python
- Python 模塊推薦:https://pymotw.com/3/
- Python 練習冊:https://github.com/Yixiaohan/show-me-the-code(一些 Python 練習題目)
尾聲
以上就是魚皮熬了幾天大夜、結合個人經驗、並且參考了大量網上的視頻、文章和評論總結而成的學習路線,真的是非常不容易,如果大家覺得滿意請務必點個 贊 支持下。
我是魚皮,持續分享編程乾貨的程序員,歡迎關注,下期再見~