我就是這樣學 Python 的
之前,我經常被問到這樣的問題:
看書很枯燥,應該怎么學習 Python? 我是小白,適不適合學習 Python? 有沒有書籍或者學習資源推薦?
我都簡潔的回答:像玩游戲一樣學習,你要從中獲得成就感;如果你能學會玩游戲,就能學會 Python。說到游戲,我的公眾號取名「Python七號」,就是源自王者榮耀里的「魯班七號」,它簡單易學,輸出高,還有句名言:相信科學!
今天展開來說一下。
其實,我從未研究過怎么學習 Python,也從未把學習 Python 當作一個目標。兩年前接觸 Python,也就業(yè)余時間投入點精力,我已經熟練掌握 Python,并可以寫爬蟲、開發(fā)網站,解決不少實際問題。這也確實不算什么成就,但是這個方法我認為對任何想學好 Python 這個技能的人來說都是非常有效的。
首先,你必須無條件相信自己學得會。
沒有人是 0 基礎,你認識字就不是 0 基礎,你上過中學、大學就不是 0 基礎,你上過班就不是 0 基礎,你有基本的理解能力、思考能力、溝通能力,就不是 0 基礎,只要不是 0 基礎,你什么都能學會,任何人只有愿意付出時間去搜索、去思考、去練習,沒有什么東西是不學會的。如果你學不會,不是因為你基礎差,而是你投入的時間不夠,練習的次數(shù)不夠。1 月學不會,那就學 3 個月,不行就 1 年,再不行就 3 年。

其次,學習 Python 不是你的目標,解決問題才是。
假如你已經學會了 Python,然后呢?如果你也不知道然后干啥,那么先不要學習,沒有目標的學習,就是在浪費時間。試想 Python 的應用領域那么廣,沒有一個目標,東一榔頭,西一棒子,怎么可能學的好。我們要以終為始,先明確學習的目標,然后對目標分解,針對每一個小目標去學習,每完成一個小目標,就是一個小小的激勵,別小看這個激勵,正是它推動著我不斷學習。
當初我做運維,為了監(jiān)控作業(yè)報錯,就想著如何將報錯日志發(fā)送郵箱,就搜了下,結果找到了 Python 發(fā)送郵件的 demo,將其改成通用的函數(shù),用在了運維監(jiān)控上,幾行代碼就搞定了,我覺得 Python 很有趣,很高效,運維領域有很大的用處,就研究了 Python 的基礎語法,很快就可以上手了。
然后就想著如何將其變得更加通用,準備做成一個守護進程,自動解析指定位置的日志文件,收集報錯信息自動發(fā)送指定收件人,有了這個目標,就學習了 apscheduler、watchdog、文件、編碼、配置文件等相關的知識,很快就實現(xiàn)了,獲得小小的成就感。
接下來就想著如何將其優(yōu)化,準備做成一個 API,其他人調用這個 API 就可以發(fā)送報警,再擴展到發(fā)送微信、短信等功能,于是就學習了 Python 相關的 http 庫,比如 fastApi、Flask、Django、Django-rest-framework,在遇到問題翻看開源代碼的過程中學習了大佬的編程技巧,還順帶著學習了編程的設計模式。再次獲得成就感。
因為接觸了 Django,我就學習了如何開發(fā)一個網站,想著如何自己弄一個 Web,來提升上線的效率,有了這個目標,我就學習了 Python 的 Web 技術棧,了解到最流行的做法是前后端分離,于是我就學習了 Vue、nginx、uwsgi、redis 等技術棧,雖然不精,但是已經能為我所用了。正好有朋友有需求,就幫著做了個網站,賺了兩萬,雖然不多,但這是學習 Python 之后獲得的第一桶金,這種激勵會持續(xù)不斷的推動著我去學習。

說了這么多,概括來講,就是先有個明確的目標,無論它多么?。ū热缗廊∫粋€網站的數(shù)據(jù)),無論它多么的俗(為了錢), 只有有了目標,學習 Python 就不會枯燥,而且目標實現(xiàn)了會獲得成就感,這種成就感是學習的原動力,會吸引著你持續(xù)不斷的投入時間,就好比玩游戲上癮一樣,我用 Python 上癮。
此外,通過主動學習提升知識的留存率。
什么是主動學習?
簡單來說,你被別人教,就是被動學習。比如,你看別人的文章、書、視頻,當時感覺學會了,過幾天可能就忘了,知識的留存率只有 5%。
你去教別人,就是主動學習。比如你寫文章講解一個技術,你做技術演講,你寫一套課程,寫書,這都是主動學習,主動學習你需要付出大量的時間和深度思考,學習到的知識也會深刻印在你的記憶里,知識的留存率是 90%。
我目前仍在堅持寫公眾號,將自己學到的,分享出來,寫作的過程中,會發(fā)現(xiàn)自己對某個技術也是一知半解,為了能夠描述清楚,就要去搜集,去學習,去思考并理解,只有自己明白了才能講清楚,這個過程也是學習的過程,這也應驗了學習的金字塔結構,如下圖所示:

主動學習除了寫作,還可以做技術分享,做演講,做直播,準備的過程就是主動學習的過程,這個過程除了讓你收獲更多志同道合的朋友,還可以積累影響力,有了影響力,就會有更多機會,這些機會推動著你再去學習,良性循環(huán)。

一句話,要想學會 Python,你先被動學習,然后主動學習,身邊有人請教,就就去教別人,如果教不了別人,就教自己的女朋友或孩子。有本書叫《和孩子一起學編程》,耗子叔推薦過,很有意思。
最后,我學習 Python 的一些網站和書籍:
Python官方文檔[1] 菜鳥教程[2] 廖雪峰的官方網站[3] 極客時間「Python核心技術與實戰(zhàn)」景霄 極客時間「設計模式」王爭 電子書-0 基礎學 Python-老齊[4]
概括來講,就是為自己建立一套學習的激勵系統(tǒng),每實現(xiàn)一個小目標,就會獲得獎勵或成就感,這種成就感是一股強大的力量,不斷推動著你去學習,去精進,這絕不是自欺欺人,要知道,人的大腦生來就是趨利避害的,要讓它感受到學習的利,每努力一次,就會獲得一次激勵,大腦就會控制你,讓你越來越喜歡這種感覺。
這樣,你就會變得越來越好。
參考資料
Python官方文檔: https://docs.python.org/3/
[2]菜鳥教程: https://www.runoob.com/python3/python3-tutorial.html
[3]廖雪峰的官方網站: https://www.liaoxuefeng.com/wiki/1016959663602400
[4]電子書-0 基礎學 Python-老齊: https://pan.baidu.com/s/14CzrrQ58bv20iwAxdf0YsQ密碼:o66w
