給初學者一些學習Python的建議
有些人認為,對於那些真正想學好程式設計,以此為工作,或是走科研道路的人,第一門語言最好是C;而有些人認為:python是最容易入門的程式語言,沒有之一。對於這個問題,仁者見仁智者見智了。
如果初學者接觸的第一門語言是C或者C++,對他們來說最難的不是語法,而是容易出現記憶體洩漏、指標等問題。有時候排查這些問題對初學者的打擊很大,尤其是沒掌握排查BUG技巧時。
如果初學者接觸的第一門語言是Python,學習曲線則會平滑得多,掌握一些基本語法和Python內建的資料結構,已經可以上手寫一些小工具或者小型應用。這對初學者來說,非常重要。因為學習的過程是一個突破舒適區的過程,會面臨很多痛苦,如果學習過程得不到激勵,很容易半途而廢,類似我們開玩笑說的「從入門到放棄」。
Python還有很多優點:上手快,第三方庫豐富,資料豐富,很容易做出“可見可得”的應用。比如你要拿C或者C++做web服務,這上手門檻就有點高了。所以很多工科學生,甚至是科班學生會問學了C/C++到底有什麼用,因為想上手做一些“可見可得”的應用太難。
Python就大不同,你想搞Web開發?上來一個Flask框架立馬就擼。想搞點資料分析?上來一個Panda+資料視覺化,擼起來輕鬆愉快甚有快感。想抓取什麼資料?你自己基於request擼一個小爬蟲採集點網站資訊,app資訊都不是什麼難事。
也是因為這樣,學習Python的過程幾乎接近“無痛”,有很好的學習正反饋過程,學一點知識就能做一點小東西,能看得到自己成長和進步。安利了這麼多好處,來看看學Python分幾個階段吧。
1.基礎知識
Python最基本的語言特性和語法:
變數
資料型別與資料結構
輸入和輸出
運算子、表示式、語句
語句控制流(順序控制,選擇控制和迴圈控制)
程式導向程式設計
物件導向程式設計
異常處理
組織程式碼
標準庫、第三方庫
針對物件導向這一塊需要重點的講一下,為什麼會有物件導向?以及我們如何設計物件導向系統?這個思考的過程有助於你理解物件導向程式設計思想。
可以說「一切皆物件」這句話普適性是很強的,大家都在玩的王者農藥,裡面每一個對戰英雄,每一個野怪,每一張地圖都是透過物件導向的思想構建起來的。
如果一開始你覺得太複雜,大可把用「分而治之」的思想把複雜的物件break down,分解成多個簡單合理的物件。任何複雜的系統都可以由若干個簡單可靠的系統組成,多個簡單可靠的系統有序地組織起來是可以實現強大功能的。
舉個例子,還拿農藥來說,”英雄“是可以作為一個基類的對吧,每個英雄都有血條,移動速度,AD,AP,物防,法扛等等。李白平A後裔一下,這是物件之間的通訊(或者說互動)。後裔放大打中李白,李白眩暈,這一系列的觸發過程都可以透過物件導向來建模。
在掌握了語法特點,掌握了物件導向的思想之後,我們應該能夠在控制檯(windows或者mac的命令列)裡邊實現一個有意思的程式。這個程式應該解決現實生活中的一個實際問題。比如出現一個職位的釋出和管理系統。有以下功能。我們可以錄入職位資訊。儲存到檔案上。我們還可以載入職位資訊。按多種條件去查詢,比如按關鍵字按城市。按薪資範圍。按商圈工作年限等等。
在做這個的過程中,自己需要設計一個很好的物件導向系統。也把Python裡常用的語言基本特性都用到了。達到這個階段算是勉強及格了吧,不過僅僅是在語言掌握層面。如果想當一個合格的研發工程師,還需要掌握很多其他技能。
2. 進階的階段
現在的開發大部分是基於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開發,恐怕是沒時間學好資料結構和演算法了,能掌握自帶的資料結構用法就行。如果你的學習時間充足,我的建議是一定要學資料結構和演算法。為了以後長期的發展,為了人民幣,一定要學好資料結構和演算法,我簡直苦口婆心地勸啊。
3. 工業界經驗
最後一個階段是實際的工業經驗。這個階段,你應該對公司用的基礎架構,如RPC,資料庫快取訊息系統中介軟體,爛熟於心。同時應該掌握最基本的系統設計的技巧。知道如何根據一個實際需求,設計一個高可用,高效能高擴充套件性的系統。
實際上我覺得第一個階段是最容易的,第二個階段會碰到一些坑,有時候不好解決。在第二個階段,你可能需要比較好的自學能力,或者有一個好的學長導師。第三個階段需要比較體系化的訓練和思考。
如果說你的系統設計能力ok,甚至經驗豐富,再加上你不錯的演算法,你肯定有一份好工作,薪資可能說多了顯浮誇,但優秀的應屆生很多人超過30w,甚至50w已經是常態了。工作3-5年的過百萬的也大有人在。
這個時代,程式設計師雖然辛苦了一點,但無疑碰上最好的時代了。
PS:辛苦是因為知識更新很快,行業發展也很快,逼著程式設計師也要往前走。保持學習才是從業者的基本素養,而不是掌握某門語言某門技術。
更多Python知識,請關注:!!
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4301/viewspace-2833316/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 給Python初學者的一些程式設計建議Python程式設計
- 學習筆記—給Linux初學者的建議筆記Linux
- 給Java開發初學者的10個學習建議,助你學習事半功倍!Java
- 給Java開發初學者的10個學習建議,助你學習事半功倍Java
- 零基礎學Java?給初學者的建議Java
- 一個牛人給Java初學者的建議Java
- 寫給Git初學者的7個建議Git
- 給Python初學者的一些技巧Python
- Linux入門(2)_給初學者的建議Linux
- 給初學者的20個CSS實用建議CSS
- 給windows media初學者的一點建議 (轉)Windows
- 給予Java初學者的建議(JavaWeb/後臺開發)JavaWeb
- 國外PHP大師給初學者的8條建議PHP
- 給初學java的一點建議Java
- 給Python初學者的一些程式設計技巧Python程式設計
- 一位資深程式設計師大牛給予Java初學者的學習路線建議程式設計師Java
- 如何高效學習Java?本文給你一些建議!Java
- 給新手學習MySQL的建議MySql
- Oracle學習的一些建議Oracle
- Python適合初學者學習嗎?Python
- 對Android初學者的10個建議Android
- Linux系統管理——初學者建議Linux
- 大資料學習入門難,給初學者支招大資料
- 關於學習的一些建議
- 給JAVA初學者最忠誠的建議——怎樣20天擺脫菜鳥行列?Java
- 陶哲軒對數學學習的一些建議
- 獻給UNIX的初學者
- 為ABAQUS軟體初學者提供的一些小建議
- 給Python初學者的最好練手專案Python
- 對於嵌入式初學者建議讀的書
- 給Java初學者的十條小建議,快來收藏吧!Java
- 給好學進取的開發者的一些建議(自學故事)
- 韓語學習經驗總結,給韓語初學者指路
- 開始學習Linux的一些建議Linux
- Laravel 初學者學習點滴Laravel
- 寫給Python初學者的設計模式入門Python設計模式
- 給初學者的Web安全指南Web
- 給初學者的 type 命令教程