
作者:梁唐
來源: 早起Python
早起導讀
今天這篇文章咱們來聊聊這個問題。對于我來說python的應用場景主要是機器學習、深度學習相關,對于其他的場景涉獵不多。因此本文的目的并不是列舉出一系列小項目給你們練手,而是希望引導大家思考這個問題,從而找到適合自己的練習項目。
python的誤區
不知道各位初學者如何看待Python這一門語言,又是如何看待程序員的技能,根據我的理解, 這當中可能存在一些誤解。其實不論哪一門語言的應用場景可能都不只是一個方向,往往是多個方向,尤其是Python這種比較成熟并且廣受歡迎的語言,它在許多領域都有很高的建樹,這就導致了Python可以做的事情非常多,相應的要學習的東西也就非常多。
也許在新手看來一個比較厲害的Python使用者,應該是所有技術通殺的,對于python的方方面面都非常了解。然而很遺憾,這是非常困難或者說幾乎是不可能的。困難的原因也是很簡單的,因為人的精力是有限的,想要在一個領域做到優秀就已經非常不容易,需要學習大量技術和知識了,更何況掌握所有方向。所以大家對于這樣一個問題,應該有一個清晰的答案,對于Python這樣一門語言,你們學習它的目的究竟是什么?
也許你有很多個答案,但是很遺憾,對于你未來職業發展來說,你可能只能選擇其中一個。
方向選擇
如果你玩過暗黑破壞神、魔獸世界或者是類似的RPG游戲的話,那么你對于選擇職業這個問題應該非常了解。在我們剛進入游戲或者是進入游戲不久,我們就需要面臨一次職業選擇,職業一旦選擇往往不可更改,你就需要在這個職業一直玩下去,如果想要換職業只有從頭開始,重新玩一個新的號。
在職場當中和游戲是非常類似的,我們最終也需要選擇我們的職業,并且我們只能選擇一個崗位,輕易也是不能更改的。如果要更改,需要從頭開始,之前累積的經驗會全部清零。因為不同崗位對于能力的要求是完全不同的,所以對于初學者而言,其實也會面臨這么一個選擇,只不過這個選擇是隱形的,當你選擇崗位進行投遞簡歷的時候,這個選擇就潛移默化的發生了。
Python常用的基礎語法并不多,在我們之前的文章當中幾乎涵蓋了大半。當我們完成了這部分學習之后,單單學習語法已經沒有出路了。再接下來進階就必須要學習一些應用上的內容,也就是要面臨一個技術選型了。
對于Python而言,一般常見的方向有這么幾種:web開發、機器學習、網絡爬蟲、運維、游戲開發。
下面我簡單介紹一下這幾個方向,大家可以對照一下自己的興趣,選擇一個自己感興趣或者是比較適合的。
Web開發
Web開發應該是當下最普遍的程序員的工作崗位了,Python在web上的應用主要是web的后端開發,也就是負責服務器邏輯處理這個部分。
我們都知道在后端這個領域目前國內最吃香的語言應該是Java,幾乎大半的公司都是使用Java作為后端語言。Java之后的其他幾門語言我也難分伯仲,簡單列舉一下有新興的Go,有古老的PHP,當然還有Python,還有已經幾乎絕跡的C++和C#。Python在這個領域當中應該只能算是不算特別小眾,總體來說還是偏小眾的。
小眾的原因和Python本身的特性有關,因為Python是解釋型語言,而不是編譯型語言。所以和Java、Go這種編譯型語言相比,在性能上天然就要劣勢。并且由于Python全局鎖的限制,導致了Python多線程在計算密集型的并發場景當中表現非常糟糕,所以很少有大公司會使用Python作為后端主力語言。據我了解國內知名一些的應該只有豆瓣、知乎,國外的有YouTube,但據說有些已經遷移到其他語言了,有的已經有相應的遷移計劃了。
Python在后端的主要優勢在于敏捷,也就是開發效率比較高。Python的Django、Falsk等框架還是非常完善以及好用的,我們可以很快地從零開始搭建出一個像樣的后端來,并且迭代的速度也很快。所以對于一些需要小步快跑對于性能要求不高的小公司,可能會選擇Python,也就是大公司幾乎不會選擇Python作為Web后端的開發語言,技術棧也必然完全不同。
如果你需要選擇這個方向,那么你除了要學習Python后端開發的相關知識,比如Django、Flask等框架之外,對于計算機網絡以及前端也需要一定的了解,這些也是后端工程師的必修課。
總體來說,Python后端這個發展方向相對比較平坦,后期發力的難度比較大,天花板比較低。學習難度和Java后端相比可能要稍微簡單一些,就業壓力應該也還好,相關的崗位雖然不太多但也不會太少。
如果要選擇這個領域的話,可以選擇一些比較常規的項目作為入門的項目。比如搭建一個個人博客,或者是XX管理系統,等這些熟練了之后就可以學習更多其他的工具庫了,比如數據庫ORM框架、kafka、redis等這些常用的中間件。把這些內容再結合到web當中,創建出新的項目。等這一塊也差不多了,接下來就可以研究研究架構設計、設計模式等等進階的內容了。
這個領域我相對比較了解一些,對于機器學習來說,Python目前是妥妥的主力語言。早年還能看到一些使用R來做機器學習的工程師,目前已經幾乎看不到了,幾乎是清一色的Python。但是老實說機器學習當中Python只是起到膠水語言的作用,幾乎所有核心的實現邏輯都不是Python支撐的。
在機器學習當中對于Python原生的內容要求非常普通,只需要會基本的語法,了解迭代器、生成器幾乎就足夠了。因為大部分內容都是通過框架或者是工具來實現的,Python只是把這些邏輯粘合到一起而已。這個方向的從業者的技能點在Python上的非常少,大部分都在機器學習的相關理論、一些庫工具的使用、深度學習框架的使用、數據處理方面的經驗。
并且機器學習本身就是一個比較大的領域,它也有很多方面的應用。比如搜索、廣告、推薦這些傳統的應用場景,以及CV(計算機視覺)、NLP(自然語言處理)、風控等等比較新一些的領域。所以選擇了機器學習這個大方向,并且完成了基礎知識的學習之后,還是要再面臨一次選擇的,因為還需要選擇進一步細分的小方向。根據我個人的經驗來說它們的發展前景是推薦、搜索、廣告 > NLP > CV > 風控,這只是我個人的判斷,僅供大家參考。
機器學習這個方向整體來說前景是非常不錯的,目前幾乎大中小型的公司都有機器學習或者是深度學習的崗位。雖然崗位多,但是競爭并不低,因為想要涌進來的人實在是太多了。尤其是這兩年AI火熱,大量的人想要擠進這個行業中來,所以招聘門檻還是不低的。
如果你想要選擇這個方向的話,只需要基本的Python語法即可,但是需要對機器學習這個領域有著比較深入的學習。比如機器學習的核心概念、常用的一些模型、數據處理的一些方法、模型效果的評估標準等等。等對機器學習的理解足夠了,就可以找kaggle、天池大數據等一些比賽來實戰一下。
Python爬蟲
爬蟲這個方向大家也不陌生,很多人應該看過一些相關的負面新聞,比如竊取用戶隱私或者是竊取了某某公司的數據等等。實際上爬蟲的本質是利用程序模擬人工對網頁進行訪問,從而將網頁當中相關有價值的信息存儲下來。
Python由于語法簡單,并且網絡相關的工具庫非常完善,而且不需要經過編譯就可以直接運行。更重要的一點是Python的全局鎖在網絡請求這種IO密集型的場景當中非常合適,并不會影響效率。而且Python可以很方便的整合其他語言的功能以及特性,使得Python做爬蟲非常合適,以至于市面上大部分的爬蟲工程師都是以Python為語言開發的。并且現在也衍生了許多分布式爬蟲的框架和工具。
由于大家都使用爬蟲,而一些大公司不愿意自己的相關信息被競爭對手獲取了去。舉個例子,假設某東把淘寶所有的商品信息都爬取了下來,然后針對性的降價來強行吸引用戶,那么顯然對于淘寶是一個打擊。為了防止類似以及其他不利于公司的情況出現,這些大公司都會設置一些反爬蟲的機制。比如在請求來臨時會判斷是否是機器人,或者是會限制一個ip最多訪問的商品數量等等。
既然有反爬機制,那么自然也有破除反爬機制的機制。所以公司里真正爬蟲工程師往往的日常工作就是和一些大公司的反爬工程師斗智斗勇。你設置了這個反爬機制,我就想一個辦法來破除。明天你發現了我的方法做了修補,我再繼續想辦法……并且在編寫爬蟲之前,需要做大量網頁的分析,找到網頁或者是應用中數據的源頭api。有些公司會把api隱藏起來,或者是需要一定的校驗才能訪問,那么就需要設置一些方法針對性的破除之后才能使用爬蟲。
有些人不喜歡這種斗智斗勇很多,開發時間很少的工作,而有些人就樂此不疲,大家可以對照一下自身的情況做一個選擇。如果想要選擇這個方向的話,可以從一些公開的沒有設置反爬機制的數據開始,學習一些目前比較先進的爬蟲框架,之后再一步步提升難度,去試著破除大公司的反爬機制,成為一個優秀的爬蟲工程師。
運維和游戲開發
老實講這兩個領域我的了解實在是不多,所以硬著頭皮簡單說說,水平有限,如果有錯誤還請大家海涵。
運維在我們都知道就是負責維護機房機器環境、項目發布上線等工作的,由于現在公司用到的機器的數量越來越多,整個發布以及維護的流程也就越來越麻煩。之前極其少的時候還可以人工一臺一臺搞定,現在機器多了還使用人工來干顯然就不現實了。為了解決這個問題,所以現在先進的運維會使用Python編寫腳本,來批量操作機器安裝環境或者是發布項目等等。
說白了其實也是把Python當成是腳本語言這樣的工具來使用,核心的能力其實還是偏在Linux命令、操作系統、分布式集群這一個部分。對于運維這個領域,我個人感覺和機器學習差不多,Python只是純工具,大家想要入門項目的話,可能還是要以運維相關的技能為主,使用Python來作為工具輔助。
游戲開發我稍稍了解一點,之前用Python做過一些簡單的小游戲。Python當中的pygame非常好用,編寫小游戲非常合適。并且Python也可以接入Unity,github里能搜到不少使用Python做出來的游戲。但是有沒有游戲公司招聘Python程序員來進行游戲開發我就不清楚了,畢竟不是做這個行業的,但至少大家做一些小游戲來自娛自樂肯定還是沒問題的。如果要練手的話可以考慮做一個2048,doodle jump這些比較簡單的小游戲。
小結
如果只是尋找Python的新手入門項目,網上隨便搜索一下出來的結果是非常多的。但是這并沒有太多的意義,因為這些項目并不一定適合每一個人。而在明確自己想要從事的方向之前,合適與不合適也無從談起,所以希望大家都可以先明確自己的方向,之后再找到對應的進階道路則要容易得多。所以如果你之前只是想要學好Python這門語言,但是又沒有考慮過方向相關的話,我建議你可以思考一下這方面的問題。
數據分析咨詢請掃描二維碼
若不方便掃碼,搜微信號:CDAshujufenxi
在本文中,我們將探討 AI 為何能夠加速數據分析、如何在每個步驟中實現數據分析自動化以及使用哪些工具。 數據分析中的AI是什么 ...
2025-05-20當數據遇見人生:我的第一個分析項目 記得三年前接手第一個數據分析項目時,我面對Excel里密密麻麻的銷售數據手足無措。那些跳動 ...
2025-05-20在數字化運營的時代,企業每天都在產生海量數據:用戶點擊行為、商品銷售記錄、廣告投放反饋…… 這些數據就像散落的拼圖,而相 ...
2025-05-19在當今數字化營銷時代,小紅書作為國內領先的社交電商平臺,其銷售數據蘊含著巨大的商業價值。通過對小紅書銷售數據的深入分析, ...
2025-05-16Excel作為最常用的數據分析工具,有沒有什么工具可以幫助我們快速地使用excel表格,只要輕松幾步甚至輸入幾項指令就能搞定呢? ...
2025-05-15數據,如同無形的燃料,驅動著現代社會的運轉。從全球互聯網用戶每天產生的2.5億TB數據,到制造業的傳感器、金融交易 ...
2025-05-15大數據是什么_數據分析師培訓 其實,現在的大數據指的并不僅僅是海量數據,更準確而言是對大數據分析的方法。傳統的數 ...
2025-05-14CDA持證人簡介: 萬木,CDA L1持證人,某電商中廠BI工程師 ,5年數據經驗1年BI內訓師,高級數據分析師,擁有豐富的行業經驗。 ...
2025-05-13CDA持證人簡介: 王明月 ,CDA 數據分析師二級持證人,2年數據產品工作經驗,管理學博士在讀。 學習入口:https://edu.cda.cn/g ...
2025-05-12CDA持證人簡介: 楊貞璽 ,CDA一級持證人,鄭州大學情報學碩士研究生,某上市公司數據分析師。 學習入口:https://edu.cda.cn/g ...
2025-05-09CDA持證人簡介 程靖 CDA會員大咖,暢銷書《小白學產品》作者,13年頂級互聯網公司產品經理相關經驗,曾在百度、美團、阿里等 ...
2025-05-07相信很多做數據分析的小伙伴,都接到過一些高階的數據分析需求,實現的過程需要用到一些數據獲取,數據清洗轉換,建模方法等,這 ...
2025-05-06以下的文章內容來源于劉靜老師的專欄,如果您想閱讀專欄《10大業務分析模型突破業務瓶頸》,點擊下方鏈接 https://edu.cda.cn/g ...
2025-04-30CDA持證人簡介: 邱立峰 CDA 數據分析師二級持證人,數字化轉型專家,數據治理專家,高級數據分析師,擁有豐富的行業經驗。 ...
2025-04-29CDA持證人簡介: 程靖 CDA會員大咖,暢銷書《小白學產品》作者,13年頂級互聯網公司產品經理相關經驗,曾在百度,美團,阿里等 ...
2025-04-28CDA持證人簡介: 居瑜 ,CDA一級持證人國企財務經理,13年財務管理運營經驗,在數據分析就業和實踐經驗方面有著豐富的積累和經 ...
2025-04-27數據分析在當今信息時代發揮著重要作用。單因素方差分析(One-Way ANOVA)是一種關鍵的統計方法,用于比較三個或更多獨立樣本組 ...
2025-04-25CDA持證人簡介: 居瑜 ,CDA一級持證人國企財務經理,13年財務管理運營經驗,在數據分析就業和實踐經驗方面有著豐富的積累和經 ...
2025-04-25在當今數字化時代,數據分析師的重要性與日俱增。但許多人在踏上這條職業道路時,往往充滿疑惑: 如何成為一名數據分析師?成為 ...
2025-04-24以下的文章內容來源于劉靜老師的專欄,如果您想閱讀專欄《劉靜:10大業務分析模型突破業務瓶頸》,點擊下方鏈接 https://edu.cda ...
2025-04-23