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:請愛上你的主語言~
以上是一個不太成熟的 但應該對新人朋友們有些參考價值的分享。希望大家有幫助,比心~
················