背單詞,一次又一次,從「abandon」開始。
背單詞,一次又一次,從「abandon」開始。
學編程,一次又一次,從「hello world」開始。
你有沒有類似的經歷?某個技能最初的那個知識點,總記得特別牢。因為每次想學習這個技能時,這個知識點都會被拿出來學一次。
這種現象在大多數人身上都有。就像 abandon,並不是英語中最簡單的單詞,卻肯定是大部分人都會的單詞。
為什麼會這樣?為什麼我們總要一次次從頭學呢?
這種狀態,就是「沒入門」。
只有「沒入門」的東西,才需要每次想掌握的時候,都從頭開始。
吉他,我曾自學過幾節課,如果以後想學的話,又要重新學。那麼,上次的學習就不能稱得上入門。
沒能學到入門程度的東西,從時間使用的角度看,非常失敗。因為明明花了時間,卻沒有任何收穫——下次還得從頭來過。
所以,當我們想學會一項技能時,不管你的具體目標是什麼,都必須內置一個基礎目標,就是至少要達到入門的程度。
想學會一項技能的第一奧義是:預留足夠的時間預算。當然如果只想涉獵一下,另當別論。我們這篇談論的目標是「學會」。
不管你聰明與否,會走多少彎路,用什麼學習材料,只要投入足夠的時間預算,就一定能學會一項技能——只要確定這世界上已經有很多人學會過這個技能。
最有用的道理,往往是最簡單的那一個。
如果你的目的只是了解了解,那就不需要考慮時間預算的問題。了解這件事,可深可淺,隨心所至,高興就好。
如果你抱著要學會的目標,而實際上卻沒有為學習預留足夠的時間預算,浪費了時間不說,還會給自己帶來心理上的負面反饋。
目的不同,思考不同,行動不同。讓自己知行合一,活得就不會那麼擰巴。
在留足時間預算的前提下,何謂 Python 入門,我覺得下面三個標準可以用來自我評估。
能夠理解完整框架。沒有搞清楚全局,通常是一遍又一遍反覆重新開始的原因之一。我們在初學一門手藝的時候,可以全局先過一遍概念和知識框架,這種 TopDown 的學習方式,是我們在學校學習時很少用到的。
想想看,我們學數學的時候,有沒有專門了解過數學知識的整體結構?恐怕大學上完了,也沒幾個人能說出來。
張野(blueeyezhy.github.io)總結了 Python 編程全局知識包括:基礎知識(基本語法、數據結構、運算與算法、函數、類與對象、模塊與包、IO 操作、正則),爬蟲,數據分析,web 程序,進程與線程,app 程序,前臺 (HTML,css,js),後臺 (資料庫,站點),信息交互,同步與異步,請求與響應,Github,安全。
雖然沒有分得很細,但起碼描出一個全景地圖的樣子。
我個人推薦的入門節奏是:
我選擇學習的模塊是爬蟲和數據分析,一方面因為工作生活中用得上,另一方面因為這兩部分和編程其他知識的關聯較少,適合外行新手突破,容易建立正反饋。
爬蟲和數據分析,推薦學習材料:
能夠用起來。能不能把技能用來解決實際問題、做出作品,是檢驗是否學會一項技能的硬標準。對於 Python 來說,函數是解決問題的最小單元,每個函數都是在解決一個具體的小問題。
所以,當你有能力寫出一個個單一功能的函數時,就已經掌握了使用 Python 的能力。《自學是門手藝》這本書的第二章【函數】,一定要認真讀透。這篇文章的最後,是我整理的這一章學習筆記。
推薦數據分析實戰方面的兩個付費小課,都是我看過的。不貴,看你是否感興趣或用得上了:
能夠讀懂相關知識。說得再狠一點,是能夠讀懂相關的所有知識。這個放在「入門」的標準裡,其實並不高。因為這一點不是要求你掌握關於這項技能具體的知識,而是要求你掌握一個關鍵的方法論。對於Python來說,就是要求你有能力讀懂和使用官方文檔 —— 甚至是各種程式語言、各種軟體的相關文檔(尤其是它們的官方文檔)。
對英文不夠好的新手來說,讀懂官方文檔是有難度的。好在,Python的官方文檔中文版翻譯得很好。但是我們還是應該努力去讀懂英文版文檔,這對編程能力會有很大的幫助。所以一個好策略就是中英對照使用。
舉個使用Python官方文檔的具體例子。方便、實用又簡單。
我在《自學是門手藝》中看到一個例子:
其中的sorted() 是一個非常簡單的排序函數,就是按照某個指定的規則排序。但是這段代碼中的 key=x.index,讓我很困惑,我知道它是指定的排序規則,但是讀不懂是什麼排序規則。這時候,最好的辦法就是求助官方文檔。
① 同時打開這兩個網頁:
https://docs.python.org/zh-cn/3/contents.html(中文版)
https://docs.python.org/3/contents.html(英文版)
② 各自搜索關鍵字 sorted:
③ 各自打開關於內置函數 sorted 的頁面:
④ 找到並對照閱讀我們需要的內容:
如果你學過Python基礎知識,理解這段話不難。那麼上面那段代碼,我也就理解了。key=x.index 是指按照列表x中各元素的索引值排序。
參數、鍵、索引,這些都是Python的基礎知識,《學習是門手藝》這本書講這些基礎講得很好,你也可以直接去讀官方文檔教程的部分(https://docs.python.org/zh-cn/3/tutorial/index.html)。去學就好了,這裡不要糾結這些具體的東西,關鍵是學會並習慣使用官方文檔。
另外,還可以用 Google 快速搜索Python官方文檔中的所需內容:sorted site:python.org。
雖然這部分操作介紹有點囉嗦、看似過於簡單,但我認為對外行新手來說,值得細碎一點。因為高手們通常都不知道我們莫名其妙地卡在哪裡。
這部分推薦的,可能是這個系列最重要的學習材料:
有了官方文檔,理論上來說,你就能讀懂關於 Python 的所有知識,爽不爽?
本篇推薦材料匯總:
附《自學是門手藝》第二章【函數】學習筆記(高清腦圖、文字版及每期超級乾貨材料匯總,請在公眾號回復「自學Python」下載)。
大家千萬不要認為看我的腦圖就能學會Python,腦圖都是畫給自己看的。想學會Python得去看文章中提到的學習材料,自己做整理。
這個系列,至少前幾篇是不會講具體知識的;但我可能更了解外行新手的問題所在。市面上關於Python的優質教學材料實在太多了,我們不需要再去做教程。對新手的重點是——如何認知學習Python,如何能夠學下去、學進去。
事實上,你可以把這個系列看做是一些優質學習材料的「認知鋪墊」。希望和你一起學會Python,加油。
學編程,一次又一次,從「hello world」開始。
你有沒有類似的經歷?某個技能最初的那個知識點,總記得特別牢。因為每次想學習這個技能時,這個知識點都會被拿出來學一次。
這種現象在大多數人身上都有。就像 abandon,並不是英語中最簡單的單詞,卻肯定是大部分人都會的單詞。
為什麼會這樣?為什麼我們總要一次次從頭學呢?
這種狀態,就是「沒入門」。
只有「沒入門」的東西,才需要每次想掌握的時候,都從頭開始。
所謂入門,就是至少要學到「不管放下多久,都不需要從頭開始」的程度。
吉他,我曾自學過幾節課,如果以後想學的話,又要重新學。那麼,上次的學習就不能稱得上入門。
沒能學到入門程度的東西,從時間使用的角度看,非常失敗。因為明明花了時間,卻沒有任何收穫——下次還得從頭來過。
所以,當我們想學會一項技能時,不管你的具體目標是什麼,都必須內置一個基礎目標,就是至少要達到入門的程度。
想學會一項技能的第一奧義是:預留足夠的時間預算。當然如果只想涉獵一下,另當別論。我們這篇談論的目標是「學會」。
不管你聰明與否,會走多少彎路,用什麼學習材料,只要投入足夠的時間預算,就一定能學會一項技能——只要確定這世界上已經有很多人學會過這個技能。
最有用的道理,往往是最簡單的那一個。
如果你的目的只是了解了解,那就不需要考慮時間預算的問題。了解這件事,可深可淺,隨心所至,高興就好。
如果你抱著要學會的目標,而實際上卻沒有為學習預留足夠的時間預算,浪費了時間不說,還會給自己帶來心理上的負面反饋。
目的不同,思考不同,行動不同。讓自己知行合一,活得就不會那麼擰巴。
在留足時間預算的前提下,何謂 Python 入門,我覺得下面三個標準可以用來自我評估。
1. 能夠理解完整框架。沒有搞清楚全局,通常是一遍又一遍反覆重新開始的原因之一。我們在初學一門手藝的時候,可以全局先過一遍概念和知識框架,這種 TopDown 的學習方式,是我們在學校學習時很少用到的。
想想看,我們學數學的時候,有沒有專門了解過數學知識的整體結構?恐怕大學上完了,也沒幾個人能說出來。
張野(blueeyezhy.github.io)總結了 Python 編程全局知識包括:基礎知識(基本語法、數據結構、運算與算法、函數、類與對象、模塊與包、IO 操作、正則),爬蟲,數據分析,web 程序,進程與線程,app 程序,前臺 (HTML,css,js),後臺 (資料庫,站點),信息交互,同步與異步,請求與響應,Github,安全。
雖然沒有分得很細,但起碼描出一個全景地圖的樣子。
我個人推薦的入門節奏是:
① 先認真學會 Python 基本知識【推薦材料,見系列(一)】
② 把上述模塊概念挨個搜索一遍,至少搞懂都是什麼意思
③ 挑自己感興趣或工作中用得上的模塊,攻堅突破
我選擇學習的模塊是爬蟲和數據分析,一方面因為工作生活中用得上,另一方面因為這兩部分和編程其他知識的關聯較少,適合外行新手突破,容易建立正反饋。
爬蟲和數據分析,推薦學習材料:
2. 能夠用起來。能不能把技能用來解決實際問題、做出作品,是檢驗是否學會一項技能的硬標準。對於 Python 來說,函數是解決問題的最小單元,每個函數都是在解決一個具體的小問題。
所以,當你有能力寫出一個個單一功能的函數時,就已經掌握了使用 Python 的能力。《自學是門手藝》這本書的第二章【函數】,一定要認真讀透。這篇文章的最後,是我整理的這一章學習筆記。
推薦數據分析實戰方面的兩個付費小課,都是我看過的。不貴,看你是否感興趣或用得上了:
3. 能夠讀懂相關知識。說得再狠一點,是能夠讀懂相關的所有知識。這個放在「入門」的標準裡,其實並不高。因為這一點不是要求你掌握關於這項技能具體的知識,而是要求你掌握一個關鍵的方法論。對於Python來說,就是要求你有能力讀懂和使用官方文檔 —— 甚至是各種程式語言、各種軟體的相關文檔(尤其是它們的官方文檔)。
對英文不夠好的新手來說,讀懂官方文檔是有難度的。好在,Python的官方文檔中文版翻譯得很好。但是我們還是應該努力去讀懂英文版文檔,這對編程能力會有很大的幫助。所以一個好策略就是中英對照使用。
舉個使用Python官方文檔的具體例子。方便、實用又簡單。
我在《自學是門手藝》中看到一個例子:
x = [&34;, &34;, &34;, &34;, &34;, &34;, &34;]
y = sorted(set(x),key=x.index)
print(y)
其中的sorted() 是一個非常簡單的排序函數,就是按照某個指定的規則排序。但是這段代碼中的 key=x.index,讓我很困惑,我知道它是指定的排序規則,但是讀不懂是什麼排序規則。這時候,最好的辦法就是求助官方文檔。
① 同時打開這兩個網頁:
https://docs.python.org/zh-cn/3/contents.html(中文版)
https://docs.python.org/3/contents.html(英文版)
② 各自搜索關鍵字 sorted:
③ 各自打開關於內置函數 sorted 的頁面:
④ 找到並對照閱讀我們需要的內容:
key specifies a function of one argument that is used to extract a comparison key from each element in iterable (for example, key=str.lower). The default value is None (compare the elements directly).
key 指定帶有單個參數的函數,用於從 iterable 的每個元素中提取用於比較的鍵 (例如 key=str.lower)。默認值為 None (直接比較元素)。
如果你學過Python基礎知識,理解這段話不難。那麼上面那段代碼,我也就理解了。key=x.index 是指按照列表x中各元素的索引值排序。
參數、鍵、索引,這些都是Python的基礎知識,《學習是門手藝》這本書講這些基礎講得很好,你也可以直接去讀官方文檔教程的部分(https://docs.python.org/zh-cn/3/tutorial/index.html)。去學就好了,這裡不要糾結這些具體的東西,關鍵是學會並習慣使用官方文檔。
另外,還可以用 Google 快速搜索Python官方文檔中的所需內容:sorted site:python.org。
雖然這部分操作介紹有點囉嗦、看似過於簡單,但我認為對外行新手來說,值得細碎一點。因為高手們通常都不知道我們莫名其妙地卡在哪裡。
這部分推薦的,可能是這個系列最重要的學習材料:
有了官方文檔,理論上來說,你就能讀懂關於 Python 的所有知識,爽不爽?
本篇推薦材料匯總:
附《自學是門手藝》第二章【函數】學習筆記(高清腦圖、文字版及每期超級乾貨材料匯總,請私信或評論Python獲取)。
大家千萬不要認為看我的腦圖就能學會Python,腦圖都是畫給自己看的。想學會Python得去看文章中提到的學習材料,自己做整理。
這個系列,至少前幾篇是不會講具體知識的;但我可能更了解外行新手的問題所在。市面上關於Python的優質教學材料實在太多了,我們不需要再去做教程。對新手的重點是——如何認知學習Python,如何能夠學下去、學進去。
事實上,你可以把這個系列看做是一些優質學習材料的「認知鋪墊」。希望和你一起學會Python,加油。
私信或評論「學習」領取免費個人學習資料