Python是最容易入門的編程語言,沒有之一。若是初學者接觸的第一門語言是C或者C++,對他們來講最難的不是語法,而是容易出現內存泄漏、指針等問題。有時候排查這些問題對初學者的打擊很大,尤爲是沒掌握排查BUG技巧時。程序員
若是初學者接觸的第一門語言是Python,學習曲線則會平滑得多,掌握一些基本語法和Python內置的數據結構,已經能夠上手寫一些小工具或者小型應用。這對初學者來講,很是重要。由於學習的過程是一個突破溫馨區的過程,會面臨不少痛苦,若是學習過程得不到激勵,很容易半途而廢,相似咱們開玩笑說的「從入門到放棄」。Python還有不少優勢:上手快,第三方庫豐富,資料豐富,很容易作出「可見可得」的應用。好比你要拿C或者C++作web服務,這上手門檻就有點高了。因此不少工科學生,甚至是科班學生會問學了C/C++到底有什麼用,由於想上手作一些「可見可得」的應用太難。Python就大不一樣,你想搞Web開發?上來一個Flask框架立馬就擼。想搞點數據分析?上來一個Panda+數據可視化,擼起來輕鬆愉快甚有快感。想抓取什麼數據?你本身基於request擼一個小爬蟲採集點網站信息,app信息都不是什麼難事。 web
也是由於這樣,學習Python的過程幾乎接近「無痛」,有很好的學習正反饋過程,學一點知識就能作一點小東西,能看獲得本身成長和進步。安利了這麼多好處,來看看學Python分幾個階段吧。算法
Python最基本的語言特性和語法:數據庫
針對面向對象這一塊須要重點的講一下,爲何會有面向對象?以及咱們如何設計面向對象系統?這個思考的過程有助於你理解面向對象編程思想。編程
能夠說「一切皆對象」這句話普適性是很強的,你們都在玩的王者農藥,裏面每個對戰英雄,每個野怪,每一張地圖都是經過面向對象的思想構建起來的。若是一開始你以爲太複雜,大可把用「分而治之」的思想把複雜的對象break down,分解成多個簡單合理的對象。任何複雜的系統均可以由若干個簡單可靠的系統組成,多個簡單可靠的系統有序地組織起來是能夠實現強大功能的。舉個例子,還拿農藥來講,」英雄「是能夠做爲一個基類的對吧,每一個英雄都有血條,移動速度,AD,AP,物防,法扛等等。李白平A後裔一下,這是對象之間的通訊(或者說交互)。後裔放大打中李白,李白眩暈,這一系列的觸發過程均可以經過面向對象來建模。segmentfault
在掌握了語法特色,掌握了面向對象的思想以後,咱們應該可以在控制檯(windows或者mac的命令行)裏邊實現一個有意思的程序。這個程序應該解決現實生活中的一個實際問題。好比出現一個職位的發佈和管理系統。有如下功能。咱們能夠錄入職位信息。保存到文件上。咱們還能夠加載職位信息。按多種條件去查詢,好比按關鍵字按城市。按薪資範圍。按商圈工做年限等等。windows
在作這個的過程當中,本身須要設計一個很好的面向對象系統。也把Python裏經常使用的語言基本特性都用到了。達到這個階段算是勉強及格了吧,不過僅僅是在語言掌握層面。若是想當一個合格的研發工程師,還須要掌握不少其餘技能。緩存
如今的開發大部分是基於web的,好比app要調web接口,pc端確定也要調web接口,因此咱們不能光在控制檯裏面玩。這個時候須要瞭解,http協議和Python web開發。咱們能夠重作前面提到的求職發佈系統,學習基於Python web如何實現。這個時候你須要實現若干個接口:數據結構
用戶端:架構
篩選職位列表
管理後臺:
爲了實現以上接口,你須要弄清楚什麼是GET,什麼是POST請求,什麼場景下用GET,什麼場景用POST。你還須要明白一個Python web開發框架,要明白一個http請求到了web框架以後,框架作了什麼事情,如何在裏面實現業務邏輯。哪些數據是服務共享的,哪些數據是用戶/請求獨享的。
此外,應該學會Python如何操做數據庫實現增刪改查,大部分的任務都離不開增刪改查。好比我提到的發佈職位就是create的過程,更新就是update,還有刪除是delete,讀是read。江湖有一個戲稱CRUD boy。
若是能順利度過進階階段,你應該能觸類旁通實現其餘相似系統了。好比如今很火的分銷,拼團,還有新聞Feeds等等。
好像我沒怎麼提數據結構和算法,這個要看我的追求。若是你要在最短期內學會Python開發,恐怕是沒時間學好數據結構和算法了,能掌握自帶的數據結構用法就行。若是你的學習時間充足,個人建議是必定要學數據結構和算法。爲了之後長期的發展,爲了人民幣,必定要學好數據結構和算法,我簡直苦口婆心地勸啊。
最後一個階段是實際的工業經驗。這個階段,你應該對公司用的基礎架構,如RPC,數據庫緩存消息系統中間件,爛熟於心。同時應該掌握最基本的系統設計的技巧。知道如何根據一個實際需求,設計一個高可用,高性能高擴展性的系統。
實際上我以爲第一個階段是最容易的,第二個階段會碰到一些坑,有時候很差解決。在第二個階段,你可能須要比較好的自學能力,或者有一個好的學長導師。第三個階段須要比較體系化的訓練和思考。
若是說你的系統設計能力ok,甚至經驗豐富,再加上你不錯的算法,你確定有一份好工做,薪資可能說多了顯浮誇,但優秀的應屆生不少人超過30w,甚至50w已是常態了。工做3-5年的過百萬的也大有人在。
這個時代,程序員雖然辛苦了一點,但無疑碰上最好的時代了。
PS:辛苦是由於知識更新很快,行業發展也很快,逼着程序員也要往前走。保持學習纔是從業者的基本素養,而不是掌握某門語言某門技術。
最後來個巨硬的廣告,近期凱威老師和SegmentFault正在聯合推薦精品課,多是東半球最好的Python課~
該系列的第一節課:凱威教你學 Python(一):Python 的變量和源代碼機制
該系列的第二節課:凱威教你學 Python(二):Python 的字符串和列表