大數(shù)據(jù)文摘出品
編譯:李雷、胡笳、夏雅薇
這是一篇關(guān)于如何成為python開發(fā)者學(xué)習(xí)路線圖的非常規(guī)咆哮體文章。
本文不僅僅是學(xué)習(xí)Python的最佳書籍、視頻和課程合集,還涵蓋了初學(xué)者和初中級人員在學(xué)習(xí)過程中遇到的一些比較大的問題,并且Stack Overflow上也找不到類似的問題或解決方法。
為何選擇Python?
為什么要學(xué)習(xí)Python呢?為什么不選擇目前流行的其他20種語言中的一種呢?當(dāng)你開始時,會有許多這樣的疑問。
選擇你的第一個編程語言就像選擇你的第一個皮卡丘。
一個語言本身怎樣并不是那么重要,重要的是程序員要知道如何用這門語言做成一些牛逼的事。
如果你并不想學(xué)Python,那么本文不適合你。當(dāng)你對自己的決定有信心并專注于后面的學(xué)習(xí)時,你將更可能成功。選擇哪種語言并不重要,但是一旦做出了選擇,就要堅持下去。
互聯(lián)網(wǎng)上充斥著大量關(guān)于各種語言和框架比較的言論,足以讓任何理性人產(chǎn)生選擇障礙。
我見過有初中級程序員聲稱他們會3-4種語言。他們傾向于泛泛的了解各種語言,卻無法寫好任何一種語言的程序,這就是想要嘗試一切而不鉆研某一門的后果。
Python是一種設(shè)計精良的語言,還有大量的在線文檔和教程。并且它還被用于很多領(lǐng)域,所以無論你的水平如何,都有很多值得學(xué)習(xí)的東西。不過其他20種語言大多也是如此。
每種語言都有它的優(yōu)點和缺點以及它最適合的應(yīng)用場景。Python最常用的3個用途是數(shù)據(jù)處理,Web應(yīng)用后端程序和自動化腳本?;谄湓O(shè)計基本原則所追求的清晰度和簡潔性,Python可以說是初學(xué)者的最佳選擇。
你總能聽到這樣的聲音,“你做出了錯誤的選擇”。十有八九說這些話的人就是想向你推銷某些東西或者他們自身缺乏安全感。
怎樣學(xué)習(xí)Python?
既然你已經(jīng)選擇了Python,那么我們來談?wù)勅绾螌W(xué)習(xí)它。
其實很簡單,選擇一個教程并完成它。然后再學(xué)習(xí)另一個,周而復(fù)始。
只學(xué)一本書或一個視頻課程是不夠的。還需要以漸增的方式不斷接觸代碼,這需要有耐心、毅力和付出(以及其他優(yōu)秀品質(zhì))!
因此我提出了一個給初學(xué)者的基本學(xué)習(xí)流程。作為人類(我上次測試過,AI對學(xué)習(xí)python不感興趣),你的學(xué)習(xí)路線圖可能會有所不同,但只需以它為參考就可以了。明白何時進(jìn)入更高層次的學(xué)習(xí)非常重要,大多數(shù)人知道得太晚了。
1.基礎(chǔ) – 用python思考怎樣把那些無聊的工作自動化。試試官方教程“The Python Tutorial / python.org”。 學(xué)會使用交互式學(xué)習(xí)工具python koans和版本管理工具git。
2.自學(xué)教程 – 學(xué)習(xí)RealPython.com上的文章和Corey Schafer的教學(xué)視頻,閱讀《Python初學(xué)者指南》(The Hitchhiker’s Guide to Python”),盡可能的多讀多看。學(xué)習(xí)Flask(用 Python 編寫的輕量級 Web 應(yīng)用框架)官方教程。
3.文檔 – 通過閱讀Python文檔學(xué)會使用Python庫,可以從requests庫開始。開始構(gòu)建你自己的程序,任何程序都行,不要忘記參考步驟2中的文章和視頻。
4.交流 – 翻看過去的Pycon技術(shù)大會的視頻,它們的含金量很高。強烈推薦書籍《編寫高質(zhì)量的python代碼》(Effective Python)和《Powerful Python》以及Talk Python Training上的課程
5.源代碼 – 瀏覽你最喜歡的Python包的代碼,現(xiàn)在正是參與Python開源項目的好時機。
您可能更想選擇edX課程而不是閱讀書籍,但其實學(xué)哪個課程都無所謂,整個學(xué)習(xí)過程才重要。
通過閱讀書籍建立堅實的基礎(chǔ)。
按照教程用Python完成單個任務(wù),如發(fā)送電子郵件或讀寫文件,這會讓你了解許多有用的Python包和庫。
逐漸養(yǎng)成閱讀文檔的習(xí)慣,使用Python庫構(gòu)建小型應(yīng)用程序。
深入理解語言及其工具,了解該領(lǐng)域的資深人員正在做什么。
直接閱讀源代碼。
如果你已經(jīng)嘗試過上圖中所有的資源,下面的鏈接有更多有用的資料
在學(xué)習(xí)任何教程時,記得要編寫代碼作為練習(xí),僅僅閱讀代碼示例是不夠的。
學(xué)習(xí)通用問題的解決
就像水彩和油畫有一點點不同一樣,學(xué)習(xí)語言(框架/庫)和學(xué)習(xí)編程之間也存在細(xì)微的差別。
在你學(xué)習(xí)諸如“Web全棧開發(fā)”課程之前,請明白它不會讓你成為一名優(yōu)秀的程序員,只會教你用一個特定的流程來解決一個簡單的問題。(的確,大多數(shù)這種課程中搭建的web應(yīng)用程序是很簡單的。)知道如何搭建雖然很好,但能夠設(shè)計自己的程序就更好了。要留意編程結(jié)構(gòu)、設(shè)計模式和算法,這些并不是Python所特有的,對所有語言都差不多。
堅持下去,自然會發(fā)現(xiàn)規(guī)律。
尋找答案
如果你遇到困難(會的,還可能不止一次),請在放棄之前嘗試解決它。很可能有人之前已經(jīng)遇到過同樣的問題并且在網(wǎng)上發(fā)布了解決方法,去網(wǎng)上搜吧。此外,Python社區(qū)(一個全世界使用Python的程序員交流社群)也很不錯,在那你可以隨時向人們尋求幫助。還可以加入Gitter上的Python頻道。
哇Python!
Python中有很多值得學(xué)習(xí)的東西。它可以被用于許多領(lǐng)域,不要跳過基礎(chǔ)知識的學(xué)習(xí)而直接轉(zhuǎn)到特定的專業(yè)領(lǐng)域。比如,學(xué)習(xí)科學(xué)計算包PyTorch應(yīng)該在學(xué)會打包之后,使用Django應(yīng)該在使用虛擬環(huán)境之后。從長遠(yuǎn)來看,深入掌握Python的知識是值得的。某個特殊庫的使用可以減少調(diào)試程序所花費的時間。
需要花多少時間來學(xué)習(xí)?
9條命吧。
學(xué)習(xí)東西需要時間,而且比大多數(shù)人告訴你的要長的多。你不可能在幾個月內(nèi)成為程序員專家,好事多磨。我建議你首先關(guān)注Python至少一年,避免在這一年里分心,但不要害怕學(xué)習(xí)其他新事物。Python并不是成為一個技術(shù)全面的開發(fā)人員的唯一知識。學(xué)習(xí)Git,Markdown,HTML也很不錯。在這個過程中你可能還要重拾JS或統(tǒng)計學(xué)。
持續(xù)不斷的學(xué)習(xí),而不是只學(xué)一次就夠了!
明白學(xué)習(xí)/構(gòu)建周期
任何創(chuàng)造性的/研究性的努力都有兩個不斷重復(fù)的階段 – 學(xué)習(xí)和構(gòu)建。
在學(xué)習(xí)階段,你應(yīng)該專注于積累知識。閱讀書籍,完成每個教程并熟悉已經(jīng)掌握的知識。
在構(gòu)建階段,你可以通過應(yīng)用前一階段獲得的知識來創(chuàng)造新的東西。不要懷疑你的技能,不要相信那些說你不行的聲音,編寫自己的應(yīng)用程序,完成后回去繼續(xù)學(xué)習(xí)。
要平衡這兩個階段,比如一到兩個月的學(xué)習(xí)階段,然后是一個月的構(gòu)建階段,大多數(shù)人都害怕開始構(gòu)建階段。
成為這場游戲的求學(xué)者
探索有關(guān)你正在學(xué)習(xí)的語言的一切知識,了解你所在領(lǐng)域的領(lǐng)軍者,勇于提問,了解為什么要這樣設(shè)計。
你可以在GitHub上關(guān)注Kenneth Reitz,在上下班路上聽Talk Python,根據(jù)Python pep8編程規(guī)范來編寫代碼等等。你這樣做并不是因為這是學(xué)習(xí)內(nèi)容,而是因為你想要知道關(guān)于Python的一切。
相關(guān)報道:
后臺回復(fù)“志愿者”加入我們