引自:知乎-----《如何系統地自學Python-彭貓》
任何一門編程語言都有硬知識和軟知識兩部分,起步時主要任務就是掌握硬知識
1、硬知識
指的是編程語言的語法、算法和數據結構、編程范式等
適合初學者的教學材料:
笨辦法學python
The Hitchhiker's Guide to Python-著重于python最佳實踐,不論專家還是新手
python官方文檔 實踐中大部分問題都可以在官方文檔中找到答案
輔助工具
https://www.pythontutor.org
一個python對象可視化的項目,用圖形輔助理解python中的各種概念
Python哲學:
用一種方法,最好是只有一種方法來做一件事
必要時,需要閱讀講解數據結構和算法的書,對理解和使用python中的對象模型有很大幫助。
2、軟知識
指的是特定語言環境下的語法技巧、類庫的使用、IDE的選擇等
對于初學者而言,起步階段最易走火,走彎路,在選擇版本時一會2.7一會3.x,或者徜徉在類庫的大海無法自拔,scrapy、numpy、django什么都要試試,或者參與什么什么活動等,都是一些沒有意義的,做什么都是三分鐘熱度,結果什么都不會,慢慢自己的耐心以及熱情都被消磨殆盡。
起步階段核心任務:
掌握硬知識,軟知識適當了解;選擇一個方向努力走下去,切記貪多!
3、發展階段
完成基礎知識后,必定會感覺到空虛,懷疑這些語法是否真的有用,要使python發揮價值,就不能只停留在語法層面。
發展階段的核心任務:
跳出Python,擁抱世界
python有很多分支:
科學計算和數據分析
爬蟲
web網站開發
游戲
命令行實用工具等
在此階段,不論是選擇哪個方向,都需要大量的知識支撐,不可避免接觸大量類庫,閱讀大量書籍。
3.1、類庫方面:
英文版:Awesome Python項目
中文版:Awesome-Python-Cn
Python資源大全中文版,包括:Web框架、網絡爬蟲、模板引擎、數據庫、數據可視化、圖片處理、文本處理、自然語言處理、機器學習、日志、代碼分析等。
3.2、書籍方面:
科學和數據分析:
爬蟲:
HTTP權威指南
《用python寫網絡爬蟲》
《python爬蟲開發與項目實戰》
《精通python網絡爬蟲》
Web網站:
到這發現上述列舉的大部分書籍與Python沒有很大的直接聯系,這其實也是跳出Python,擁抱世界的主體思想
Python與其他專業知識相結合才能解決更多的問題
4、深入階段
此階段的你對python可謂是了如指掌,那么你一定知道python也是用c語言實現的,相對于c語言,python在乎的是“表面”,如何能快速實現或者解決某些事情,而對語言內部,底層是怎樣的并不關心,假如你只想好好做一個二流程序員拿著死工資,到此便可以結束了;但是,你是一個有追求的攻城獅,那么你一定會忍不住去拆開python的黑盒子,去真正理解它的設計思路。
推薦書籍:
真本書對python源碼最核心部分,給出了詳細的闡釋,不過此書需要對c語言內存模型和指針有著良好的理解。
這是一門斯坦福大學公開課,講師從各種編程范式的代表語言出發,給出了每種編程范式的最核心的思想,對c語言也有非常深入的講解,對閱讀python源碼也有很大幫助,python的許多最佳實踐都隱藏在那些眾所周知的框架和類庫中,如Django、Tornado等
5、結語
大同三千,擇其一而從之,大多殊途同歸,堅持才能勝利!
拓展
(1)、對于一個程序員來說,如何提高自己的編程能力至關重要:
X:代表思考解決方案、問題的時間
Y:代表實現代碼的時間
編程能力 = F(X,Y)(X>Y)
要想提高編程能力就需要優化X 、Y與F(X,Y)
推薦書籍:
《Structure and Interpretation of computer Progam》簡稱SICP
又名《計算機程序的構造和解釋》
(2)、入門階段易忽視的幾點:
英語
學會提問技巧
作為一枚程序員,搜索引擎的高級搜索是首先需要學會的,當單靠檢索無法實現時,就需要靠提問解決問題了;
無論是stackoverflow,亦或者是知乎、其他論壇、大神博客等,學會提問至關重要。
提問前可以好好看看這篇文章:What-you-have-tried
- 不做獨狼
狼是群居動物,人亦如此,一匹狼的威脅遠不如一群,在自學編程的路上,一個人學習遠不如一群人來的更有效果
個人可以嘗試搭建博客、個人網站,記錄自己想法,訂閱相關的博客,遇到問題可以有人幫忙答疑解惑,閉門自學只會固步自封!
stackoverflow上票選得出的程序員必讀書籍前兩位:
《code complete》-代碼大全
《The Progmatic Programmer》-被稱作代碼小全