給Python新人發展之路的小建議

hello,大家好,之前分享了一個關於Python新人們對於Python崗位的諮詢與學習發展,那麼本文將之前的分享稍作總結分享出來。

Python是一門面向對象的解釋型語言,在這20多年的時間來,Python的各種生態越來越齊備,加上其自身簡潔的語法,這些年python的使用量逐年上升(2019。6月已經排行前三)

Python主流的幾大領域 與 發展方向 (薪資參考 boss職聘與獵聘與拉鉤)

1:人工智能

集多項技術於一身,使機器可以感受、理解、學習並採取行動,無論是自食其力還是參與人類活動。

python的代表模塊 tensorflow

前置項: 高數爲基礎,算法要求高,python基礎

薪資範圍: 15k~50k 左右

給Python新人發展之路的小建議
2:數據分析

指用適當的統計分析方法對收集來的大量數據進行分析,提取有用信息和形成結論,並對數據加以詳細研究和概括總結的過程

Python的代表模塊:numpy panda

前置項:python基礎 數據結構思路要求清晰

薪資範圍:15k~40k 左右

3:爬蟲

一種按照一定的規則,自動地抓取萬維網信息的程序或者腳本。另外一些不常使用的名字還有螞蟻、自動索引、模擬程序或者蠕蟲。

python的代表模塊 scrapy beatuifulsoup 等

前置項 python基礎

薪資範圍:15k~35k 左右

4:web開發

最傳統的 c s 開發(client and service)如今的無論是互聯網還是物聯通,只要不是本機操作,一定不會繞過 web service,以至於成爲所有行業幾乎都會接觸的領域,也最爲基礎

python 代表模塊 django flask tornado 等

前置項: python 基礎

薪資範圍: 15k~35k 左右

還有很多的崗位,比如 量化交易,圖像識別,軟件開發,遊戲開發,區塊鏈等,都有python的崗位。

學習 Python 的 一些必用知識

1: 選擇python3.5以上版本進行學習:因爲python2到2020年官方將停止維護,並且3.5版本之前的python3性能上還有所缺陷,這裏推薦 python3.6與python3.7版本

2: 在學習了基本的python語法之後,必學的python庫如下:

TCP的使用 socket 庫:以上四個方向沒有一個是一定不會用到這個庫的,在進行數據採集的時候,如果想快速傳輸數據,socket 無疑是一個非常高效的選擇

http 的使用 request 庫:以上四個方向必會的庫, 尤其是 爬蟲與web開發,http請求幾乎是一定存在於所有項目之中的,瞭解http協議 與 http包是非常重要的,那麼我們可以以 request這個庫爲媒介,進行深入學習瞭解,當然從性能上來說,我感覺tornado的httpclient可能性能更好一些。也推薦大家使用。

多線程的使用 gevent thread mutiprocess: 如果想更效率的執行你的項目,無論是數據分析,爬蟲,機器學習,併發的執行一定是一個高效率的工作方式,於是以上三個庫也是python必學的庫,那麼作爲web開發,如果想支持高併發,多進程 多線程的部署也是必須的,如果更好的提高併發基礎是web service開發非常重要的一堂課。 從事python崗位的同學應該知道 gil是什麼,使得python的多線程不那麼高效。如果 想關閉gil全局鎖,可以考慮一下 pypy,但關閉真的好嗎?有待商榷。

db sdk 的使用,在學習 一個後端語言的時候,至少要學會使用2 個 db,一個 關係型數據庫 (如 mysql),一個非關係型數據庫 (如 redis, mongodb)這是 作爲數據存儲最基礎的兩個庫,根據業務的不同 使用不同種類的數據庫。

其實呢,沒有絕對的等級劃分,但是硬要說的話呢,我個人對於是否已經擺脫新手,進入一個初級階段甚至再高一點的評判,並不一定準確,但我認爲可以作爲一個參考給大家(掌握基礎知識是必備的,不作爲評級使用):

3:初級和非初級的一個重要的分水嶺是解決問題的能力;當程序報錯的時候,能夠查看錯誤 根據錯誤自己尋找答案,就已經達到初級以上的水平,因爲可以確定,你有自己解決問題的能力。

4:初級和中級的一個分水嶺;拿到一個sdk 能夠讀懂源碼,理解程序的執行邏輯,而非拿來主義直接使用了事。比如 阿里雲有些sdk的方法很噁心,寫的不是很清晰,你從他的文檔幾乎看不出什麼,這時候如果你不會看sdk源碼,基本此項目你已經掛了。所以反之可以看源碼你將知道你要用什麼功能 ,怎麼用。甚至說不定還能找出他的一些bug或重寫他的一個功能。舉例,pymysq 取出數據庫的時間是一個datetime類型,但是在json傳輸的時候,datetime無法被序列化

以 web開發爲例 的一個 事業發展規劃

第一階段:學會 python基礎,並學會 web開發的基本開發 業務開發(如使用 django框架),學會使用db的sdk ,學會和客戶端交互(application/json)

第二階段:學會前端開發,html5 css3 javascript 可以獨立開發前後端業務(錦上添花 學會 vue 學會 webpack 等 更高效 更主流的 開發框架與構建工具),前端與app的交互與service的交互

第三階段:前後端可用性(全棧開發):

後端:部署高可用服務,至少保證多地多活(即多地部署,有1服務可用即可保證服務可用),數據庫高併發的實現(如集羣化,讀寫分離,緩存穿透等)還有很多很多…… 對服務進行監控與維護

前端:避免前端v8引擎優化失效,更高效的使用異步,如何可以減少更多的流量(移動端),如何更好的保證前端的代碼安全等

第四階段:參與項目設計,參與項目業務架構,輸出項目各種圖:如 架構圖,類圖,時序圖等,參與初期項目語言,框架選型,代碼結構制定;對代碼標準進行確定;對後期代碼上線前的標準審覈進行確定,攻克項目技術難點,開發項目核心代碼,帶路項目組員進行開發;-------架構

最後呢,幾點建議給大家

1:多練多寫多思考,不求人,鍛鍊自己解決問題的能力

2:堅持一門語言做主語言,當你認爲對這一門語言掌握做夠好的時候,再去拓展別的語言

3:請愛上你的主語言~

以上是一個不太成熟的 但應該對新人朋友們有些參考價值的分享。希望大家有幫助,比心~

················

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章