若是你一直想學Python,可是不知道如何入手,那就別猶豫了。這篇文章就是爲你寫的。git
隨着數據科學概念的普及,Python這門並不算新的語言火得一塌糊塗。github
由於寫了幾篇用Python作數據分析的文章,常常有讀者和學生在留言區問我,想學習Python,該如何入手?編程
我常常須要根據他們的不一樣狀況,提出對應的建議。這樣針對性雖強,但效率不高。這個問題,我仍是寫出來,讓更多的人一同看到吧。瀏覽器
有幾位出版社的編輯,給我發私信,鼓勵我趕忙寫一本Python教材出來。微信
我暫時尚未寫Python基礎教程的計劃。由於在我看來,現有的學習資源已經足夠好了。網絡
有現成的資源和路徑,爲何許多人依然在爲學Python犯愁呢?架構
由於學習有個效率問題。框架
Python語法清晰明快,簡單易學。這是Python如此普及的重要緣由。可是,選擇合適的Python學習方式,須要跟你自身的特性相結合。編輯器
人羣劃分的標準是什麼?不是你是否計算機相關專業,也不是你是否已經工做,而是一個重要的指標——你的自律能力。ide
你可能以爲我說的話沒有信息含量。自律能力強,學得更好,地球人誰不知道?
但是,自律不夠強的人,難道就註定什麼也不能學了?
固然不是。
每一個人的性格都有不一樣的特色,沒有絕對的高下之分。不信你聽聽劉寶瑞先生的相聲《日遭三險》,就明白了。
自律能力也是這樣。只要你能清楚認識本身,就能以更高效的方法來學習新知識和技能。
下面咱們分類探討一下,不一樣自律能力的人,該如何學Python,才能更高效。
我們先從自律能力最差的人提及。
這樣的同窗,每每是三分鐘熱度。偶然受到了刺激,發奮要學習Python,以便投入數據科學的事業中。
他會當即跑到圖書館或者書店抱回來一本《X天從入門到精通Python》的書開始啃。結果X天還沒到,就順利跑完了從入門到放棄的全過程。
你沒能堅持下來,本身確定是有責任的。可是最大的問題,在於過分高估本身的自律能力。
這樣的同窗,我推薦你到Coursera平臺上,循序漸進學習一門很是好的MOOC——「Programming for Everybody」。
推薦這門課,是由於課程質量真是太好了。
首先是教材好。這本教材的來源是有故事的。
先是 Allen B. Downey 寫了一本開放書籍 「Think Python: How to Think like a Computer Scientist」。
這本書在Amazon上的評價是這樣的:
Charles Severance以爲這本書寫得太好了,想把它做爲教材。因而徵得做者贊成,大篇幅借鑑了這本書的內容架構,編寫了一本 「Python for Informatics」。
Charles寫做這本書的時候,同時開放推出了iBook格式。裏面就包含了本身的授課視頻,供學生直接觀看學習。
後來,Charles用這本書擴展,作成了一門MOOC。2015年上線不久,硅谷資深工程師就都爭相學習。
Charles深諳課程迭代的技藝。他不斷添加內容,完善課程體系,將一門課發展成一個專項課程(Signature Track),而且將教材升級爲 「Python for Everybody: Exploring Data In Python 3」
在目前全球MOOC口碑榜上,Charles的這門課一直名列前茅。
這個專項課程深刻淺出講解Python原本就很簡單的語法,並且還用數據科學的一些基礎工做任務,帶動你去使用Python語言寫簡單項目。這種紮實的訓練過程能夠加強你的信心,激發興趣。
對於自律程度低的同窗來講,下面這個特性更重要——一切工做都有時限。
Coursera上的課程,每週的任務很明確。練習題正確率若是不能達到80%,就不能過關。到了截止日期,若是你不能完成所有練習和課程項目,就拿不到證書。
老師在前面引領你,助教在旁邊督促你,平臺用時間表提醒你,論壇上的同窗們在用同儕壓力推擠你……
想偷懶?想三天打魚兩天曬網?很難。
若是你的自律能力中等偏上,那麼你能夠選擇的面就寬了。
這裏我給你推薦另外一個MOOC平臺,叫作Datacamp。
我第一次接觸Datacamp,是在2015年初。那時我在Coursera上選修杜克大學的統計學課程 「Statistical Inference」,配套的練習就在Datacamp上。
當時這個平臺就給我留下了很是深入的印象,由於代碼的運行都採用了雲環境。學習者不須要在本機安裝任何環境,一個支持HTML5標準的瀏覽器就能帶給你完整的學習體驗。
對初學者來講,這種入門方式太好了。要知道,許多人的學習熱情,就是被環境配置和依賴軟件包安裝的坑埋掉的。
兩年以後,Datacamp已經迭代得更爲強大。你能夠打開首頁的Data Scientist with Python這個學習路徑,查看其中已經提供的20門課程。
這些課程涵蓋了從Python基礎,到數據處理,直至人工智能和深度神經網絡的方方面面。
全部的課程設計,都是短小精悍的。通常不超過4個小時,就能夠完成某一主題的學習。這樣你學起來絕不費力,能夠在至關短的時間內得到反饋(練習題自動評分)和成就感(證書)。
這個平臺的課程,進度徹底由學習者本身掌控。因此我把它概括爲適合有必定自律能力的學習者。
它既能夠給你即時的回饋,讓你時刻了解本身所處的位置進度,不會迷失方向,又能充分體驗自主學習的樂趣。
Datacamp的課程,通常都是第一部分免費開放。後面部分購買後才能解鎖學習。若是你對本身的學習能力和毅力有信心,能夠購買一個完整時間段(例如一年)的課程。在此期間,全部平臺上的課程,你均可以學習,而且能夠在經過後獲取證書。這樣的購買方案自己已經有優惠,並且每一年都會有特定時段的大幅打折促銷,很是划算。建議放到購物車裏面多關注。
這是我在Datacamp拿到的深度學習框架Keras課程證書。確實只須要幾個小時的時間就能學完。成就感仍是蠻強的。
前面提到的課程費用不菲。Coursera上每門課平均價格在49美圓左右。對來自發展中國家的學生羣體,Coursera能夠提供助學金。你能夠根據本身的需求如實填寫申請表,來得到資助。
對於自律能力強的同窗來講,你的選擇能夠變得很是簡單直接——能夠用最受推崇的教材,本身看書學習。
最受推崇的教材,實際上是沒有的。正如西諺有云:
One man’s meat, is another man’s poison.
這個世界上,就沒有哪件東西你們都說好。但口碑很是好的教材是存在的,例如這本起了個怪名字的《笨辦法學Python》(Learn Python the Hard Way)。
千萬不要被名稱迷惑,望文生義以爲這是一本糟糕的Python入門教程。
偏偏相反,這本書的設計,很是適合人們的認知規律。
咱們學東西,由淺入深,由易到難,逐步遞進。若是一味追求新知,那麼以前學的東西會很快遺忘。若是老是原地打轉,會帶來枯燥和無聊的感受。還記得高三作的那一年卷子吧?
好的教科書,應該在每個章節給學習者提供新的知識和內容,提出足夠的挑戰。可是挑戰性不能高到讓學習者產生挫敗感而放棄。同時也不能忽視在後續內容中把前面所學知識改換面目不斷螺旋上升式重複出現。只有這樣才能鞏固所學,讓學習者感覺到基礎知識的做用,加強學習的愉悅感。
這麼說有些抽象,實際上有一本英語教材很是符合上述認知規律。就是我在課堂上和文章裏反覆推薦過的這一套教材:
《笨辦法學Python》也是一本這樣的書。你須要作的就是把書打開,同時打開一個好用的代碼編輯器,開始按書中要求敲代碼、運行代碼、改代碼……
下圖是我當初學習時,照着這本書敲的代碼。
書中對Python基礎內容訓練的完備性,至今無出其右者。
順便說一句,這本書有中文版哦。因此若是你英語很差,徹底不用擔憂。
囑咐一句,英語真該好好學。拓寬的不只是你的眼界,也增長了你可能得到的機會。考慮到仔細閱讀這部分的讀者都是自律性很強的人,我就不用多說了。
三條基本的Python入門路徑講完了。經過對本身自律能力的清晰理解,相信你能夠找到一種適合本身逐漸學習和掌握Python的方式。
可是完成了讀書和聽課,是否是就完事大吉了?
固然不是。
許多人在這裏犯了錯誤。他們覺得拿到了證書,或學完了教材,就算是真正掌握了Python。而後把這門語言丟棄在一旁,去刷美劇和小說了。
相信我,你會遺忘的。
若是你對於長期不接觸的東西從不遺忘……去醫院檢查一下吧。
大部分人的記憶模式,都是這個樣子的:
若不加以干涉,不出一個星期,你就能把學到的新知識幾乎忘光。
若是你不但願本身辛苦學來的Python知識被如此輕易浪費掉,怎麼辦?
你應該實踐。
實踐Python技能,未必必定要找個世界500強企業的核心技術部門,「996」工做N年才能完成。
你能夠從生活中尋找各類有趣的問題,而後思考可否用Python編程來解決它。
我真正以爲本身初步掌握了Python,就是在完成了個人第一個github項目以後。
項目很是簡單,就是用Python做爲膠水語言,把一系列工具鏈接在一塊兒。能夠把Markdown撰寫的內容爲所欲爲一鍵變化成各類格式。
格式包括而不限於:
其中部分功能我正陸續發佈在github公開項目中,地址在這裏。相應地,我也撰文作了介紹。
這個小項目,我從2014年開始作。實話實說,如今回頭看當時的代碼,簡直慘不忍睹。可是若是你逐漸對本身的代碼有了這種感受,證實你在進步。
不要期望本身一出手就能寫出完美的代碼,要把「迭代」兩個字時刻裝在內心。這樣你才能容忍本身的笨拙,不斷提升。正如古人說的那句:
勤學似春起之苗,不見其增,而日有所長。
我在作這個項目的過程當中,曾經遇到了中文編碼、隱私信息存儲、文件名空格處理、絕對與相對路徑、發佈流程劃分、功能解耦合、Web圖片地址附帶參數……等等一系列的問題。
經過回顧用git版本控制工具記載下來的日誌,以及版本對比功能,你能夠清楚看到本身是在什麼時候利用什麼方法解決了這些問題。而後別忘了,給本身工具箱裏的新增小技能打個勾。
一個個小問題逐漸被你攻克的時候,你才能真正感覺到所學技能的價值,而且點滴積累自信。
你學會Python了嗎?你是用什麼方法學會的?能否把你的學習心得體會分享給你們?對本文推薦的資源和路徑,你有什麼不一樣的意見,或者更好的建議?歡迎留言,記錄下你的思考,咱們一塊兒交流討論。
喜歡請點贊。還能夠微信關注和置頂個人公衆號「玉樹芝蘭」(nkwangshuyi)。
若是你對數據科學感興趣,不妨閱讀個人系列教程索引貼《如何高效入門數據科學?》,裏面還有更多的有趣問題及解法。