為什麼不推薦Python初學者直接看項目源碼
無論是有沒有其他語言的經驗,入門Python都很簡單。Python擁有簡單直觀的語法,方便的語法糖,以及豐富的第三方庫。只要一個基礎的Python教程,大家基本上都能無障礙的入門。在入門之後,很多人對於進一步學習的建議都是「做項目」、「看源碼」,然而這樣的建議實際是較難實現的,自己執行的效率會很低。
「這種時候如果有整理好的Python程式碼片段,如果有指導分析優秀開源程式碼的教程就好了。」
抱著這樣的想法,我開始從自己「低效」的學習中,整理「高效」的乾貨,希望能夠幫助到各位初學者。這就是「Python程式碼閱讀」系列。
在這個系列中,最開始是大量Pythonic的程式碼片段,不僅展示了如何應用Python語法和標準庫,還展示了一些有趣的技術和思維方式。
後續計劃增加GitHub上流行的簡單Python項目。以及一些小型的實用系統的實現。
通過下面的鏈接就可以進入到「Python程式碼閱讀」系列合集的施工現場。
初學Python的常見問題
對於初學者而言,Python入門很簡單。入門之後只靠基礎語法也完全可以做到平時寫寫腳本,解決自己工作、生活上的重複性勞動。想要什麼功能,基本上都能找到方便的庫。在只求應用,不求理解的情況下,很快就能實現日常表格處理、文件下載、郵件發送等功能。甚至像影像處理、OCR這樣「高端」的功能也有對應的工具庫可以使用。
但是做到這種程度只是小打小鬧,想要真正的在開發工作中使用Python語言,或者是在GitHub上貢獻開源程式碼,都是遠遠不夠的。這時候,初學者的常見問題主要集中在以下四點:
- 學會了語法,但是不會應用。
- 仍然是用其他語言的邏輯在寫Python程式碼,不是Pythonic的程式碼。
- Python項目結構不合理。
- 缺少對更深入主題的研究,例如裝飾器、異常處理、多進程多執行緒、設計模式等。
傳統建議的解決方案
對於已經了解基礎語法,學習了Python基礎數據結構的初學者,傳統的建議是做項目、看源碼。這樣的建議不能說不正確,但是在執行起來會有各種各樣的問題,從而導致學習效率低下。
首先聊一下做項目
對於初學者而言,應聘到一個使用Python語言做開發的團隊顯然是不現實的。那麼基本上項目的來源就是自己找的練手課題或者在GitHub上參與開源項目。
自己找個項目進行練手可以說是效果最差的方式了。它實際上還是摸著石頭過河,接觸不到優秀的源碼和實現方法,也沒有人指導。最終也只是實現了功能而已,不論是程式碼設計還是項目結構,都是閉門造車,提升有限。最大的作用也就是提高對語法、基本數據結構和標準庫的熟練程度。
至於在GitHub上找項目,一般新手能夠找到的優秀項目基本上都已經過了初始階段。在這種情況下,對於初學者而言,加入維護的難度較大,能夠做的工作更多的只是一些小bug的發現和修復,甚至於只能從文檔方面開始。
然後聊一下看源碼
對於初學者而言,雖然直接看源碼複雜度較高,但是只要肯下功夫,用好搜索引擎,大部分功能性的源碼還是可以看懂的。不過如果沒有人指導的話,效率肯定是不高的。同時很可能只是看懂邏輯,明白了功能如何實現。如果沒有一定的設計模式等知識的基礎,難以發現和理解程式碼的設計思路和原因。實際「看源碼」的作用就少了一半,得不到精華。
我的方法
我的方法也是從傳統的方法裡面來的。說白了就是自己受苦,自己從「低效」的「看源碼」和「做項目」的學習中,整理「高效」的乾貨,挑選合適的源碼和項目,配上合適的講解,從而可以更好的被初學者接受,提高學習效率。
這就是「Python程式碼閱讀」系列。
目前該系列還在努力連載施工中,通過下面的鏈接就可以進入到「Python程式碼閱讀」系列合集的施工現場。
「Python程式碼閱讀」系列首先從簡單實用的函數開始,聚焦單一功能性的函數。不僅展示了如何應用Python語法和標準庫編寫足夠Pythonic的程式碼,還展示了一些有趣的技術和思維方式。同時這些程式碼片段也具備很高的實用性,我自己平時也會在其他項目中使用到。
後續的計劃是增加GitHub上兼具實用性和趣味性的優秀Python項目的源碼解讀。從項目結構開始梳理,理清功能和邏輯,講解程式碼設計和實現。
同時也計劃增加一些趣味的小型系統的實現。例如小型區塊鏈、資料庫、docker、git甚至是程式語言等。通過一步一步的實現這些系統,不僅能夠學習到Python編程,還能學習到這些系統的設計理念和內部實現邏輯。
施工進度與地點
目前「Python程式碼閱讀」系列還處於第一階段的編寫中,也是最適合剛剛進行完Python基礎語法學習的初學者的部分。系列中展示的程式碼片段可以儘快讓初學者掌握如何應用Python語法和標準庫,同時其實用的功能性,也可以在以後的開發中用到。
通過下面的鏈接就可以進入到「Python程式碼閱讀」系列合集的施工現場。