摘要:這里推薦一本書源碼剖析源碼剖析豆瓣這本書把源碼中最核心的部分,給出了詳細的闡釋,不過閱讀此書需要對語言內(nèi)存模型和指針有著很好的理解。
是否非常想學(xué)好 Python,一方面被瑣事糾纏,一直沒能動手,另一方面,擔心學(xué)習(xí)成本太高,心里默默敲著退堂鼓?
幸運的是,Python 是一門初學(xué)者友好的編程語言,想要完全掌握它,你不必花上太多的時間和精力。
Python 的設(shè)計哲學(xué)之一就是簡單易學(xué),體現(xiàn)在兩個方面:
語法簡潔明了:相對 Ruby 和 Perl,它的語法特性不多不少,大多數(shù)都很簡單直接,不玩兒玄學(xué)。
切入點很多:Python 可以讓你可以做很多事情,科學(xué)計算和數(shù)據(jù)分析、爬蟲、Web 網(wǎng)站、游戲、命令行實用工具等等等等,總有一個是你感興趣并且愿意投入時間的。
廢話不多說,學(xué)會一門語言的捷徑只有一個: Getting Started
? 起步階段任何一種編程語言都包含兩個部分:硬知識和軟知識,起步階段的主要任務(wù)是掌握硬知識。
°1 硬知識“硬知識”指的是編程語言的語法、算法和數(shù)據(jù)結(jié)構(gòu)、編程范式等,例如:變量和類型、循環(huán)語句、分支、函數(shù)、類。這部分知識也是具有普適性的,看上去是掌握了一種語法,實際是建立了一種思維。例如:讓一個 Java 程序員去學(xué)習(xí) Python,他可以很快的將 Java 中的學(xué)到的面向?qū)ο蟮闹R map 到 Python 中來,因此能夠快速掌握 Python 中面向?qū)ο蟮奶匦浴?/p>
如果你是剛開始學(xué)習(xí)編程的新手,一本可靠的語法書是非常重要的。它看上去可能非??菰锓ξ?,但對于建立穩(wěn)固的編程思維是必不可少。
下面列出了一些適合初學(xué)者入門的教學(xué)材料:
1「笨方法學(xué) Python」:http://learnpythonthehardway....
這本書在講解 Python 的語法成分時,還附帶大量可實踐的例子,非常適合快速起步。
2「廖雪峰的 Python 2.7 教程」:Home - 廖雪峰的官方網(wǎng)站
Python 中文教程的翹楚,專為剛剛步入程序世界的小白打造。
?「The Hitchhiker’s Guide to Python!」:The Hitchhiker’s Guide to Python!
這本指南著重于 Python 的最佳實踐,不管你是 Python 專家還是新手,都能獲得極大的幫助。
3「Python 官方文檔」:Our Documentation
實踐中大部分問題,都可以在官方文檔中找到答案。
4 輔助工具:Python Tutor
一個 Python 對象可視化的項目,用圖形輔助你理解 Python 中的各種概念。
Python 的哲學(xué):
用一種方法,最好是只有一種方法來做一件事。
學(xué)習(xí)也是一樣,雖然推薦了多種學(xué)習(xí)資料,但實際學(xué)習(xí)的時候,最好只選擇其中的一個,堅持看完。
必要的時候,可能需要閱讀講解數(shù)據(jù)結(jié)構(gòu)和算法的書,這些知識對于理解和使用 Python 中的對象模型有著很大的幫助。
°2 軟知識“軟知識”則是特定語言環(huán)境下的語法技巧、類庫的使用、IDE的選擇等等。這一部分,即使完全不了解不會使用,也不會妨礙你去編程,只不過寫出的程序,看上去顯得“傻”了些。
對這些知識的學(xué)習(xí),取決于你嘗試解決的問題的領(lǐng)域和深度。對初學(xué)者而言,起步階段極易走火,或者在選擇 Python 版本時徘徊不決,一會兒看 2.7 一會兒又轉(zhuǎn)到 3.0,或者徜徉在類庫的大海中無法自拔,Scrapy,Numpy,Django 什么都要試試,或者參與編輯器圣戰(zhàn)、大括號縮進探究、操作系統(tǒng)辯論賽等無意義活動,或者整天跪舔語法糖,老想著怎么一行代碼把所有的事情做完,或者去構(gòu)想圣潔的性能安全通用性健壯性全部滿分的解決方案。
很多“大?!倍紩嬲]初學(xué)者,用這個用那個,少走彎路,這樣反而把初學(xué)者推向了真正的彎路。
還不如告訴初學(xué)者,學(xué)習(xí)本來就是個需要你去走彎路出 Bug,只能腳踏實地,沒有奇跡只有狗屎的過程。
選擇一個方向先走下去,哪怕臟丑差,走不動了再看看有沒有更好的解決途徑。
自己走了彎路,你才知道這么做的好處,才能理解為什么人們可以手寫狀態(tài)機去匹配卻偏要發(fā)明正則表達式,為什么面向過程可以解決卻偏要面向?qū)ο?,為什么我可以操縱每一根指針卻偏要自動管理內(nèi)存,為什么我可以嵌套回調(diào)卻偏要用 Promise...
更重要的時,你會明白,高層次的解決方法都是對低層次的封裝,并不是任何情況下都是最有效最合適的。
技術(shù)涌進就像波浪一樣,那些陳舊的封存已久的技術(shù),消退了遲早還會涌回的。就像現(xiàn)在移動端應(yīng)用、手游和 HTML5 的火熱,某些方面不正在重演過去 PC 的那些歷史么?
因此,不要擔心自己走錯路誤了終身,堅持并保持進步才是正道。
起步階段的核心任務(wù)是掌握硬知識,軟知識做適當了解,有了穩(wěn)固的根,粗壯的枝干,才能長出濃密的葉子,結(jié)出甜美的果實。
? 發(fā)展階段完成了基礎(chǔ)知識的學(xué)習(xí),必定會感到一陣空虛,懷疑這些語法知識是不是真的有用。
沒錯,你的懷疑是非常正確的。要讓 Python 發(fā)揮出它的價值,當然不能停留在語法層面。
發(fā)展階段的核心任務(wù),就是“跳出 Python,擁抱世界”。
在你面前會有多個分支:科學(xué)計算和數(shù)據(jù)分析、爬蟲、Web 網(wǎng)站、游戲、命令行實用工具等等等等,這些都不是僅僅知道 Python 語法就能解決的問題。
拿爬蟲舉例,如果你對計算機網(wǎng)絡(luò),HTTP協(xié)議,HTML,文本編碼,JSON一無所知,你能做好這部分的工作么?而你在起步階段的基礎(chǔ)知識也同樣重要,如果你連循環(huán)遞歸怎么寫都還要查文檔,連 BFS 都不知道怎么實現(xiàn),這就像工匠做石凳每次起錘都要思考錘子怎么使用一樣,非常低效。
在這個階段,不可避免要接觸大量類庫,閱讀大量書籍的。
°1 類庫方面「Awesome Python 項目」:vinta/awesome-python · GitHub
這里列出了你在嘗試解決各種實際問題時,Python 社區(qū)已有的工具型類庫,如下圖所示:
你可以按照實際需求,尋找你需要的類庫。
至于相關(guān)類庫如何使用,必須掌握的技能便是閱讀文檔。由于開源社區(qū)大多數(shù)文檔都是英文寫成的,所以,英語不好的同學(xué),需要惡補下。
°2 書籍方面:這里我只列出一些我覺得比較有一些幫助的書籍,詳細的請看豆瓣的書評:
科學(xué)和數(shù)據(jù)分析:?「集體智慧編程」:集體智慧編程 (豆瓣)
?「數(shù)學(xué)之美」:數(shù)學(xué)之美 (豆瓣)
?「統(tǒng)計學(xué)習(xí)方法」:統(tǒng)計學(xué)習(xí)方法 (豆瓣)
?「Pattern Recognition And Machine Learning」:Pattern Recognition And Machine Learning (豆瓣)
?「數(shù)據(jù)科學(xué)實戰(zhàn)」:數(shù)據(jù)科學(xué)實戰(zhàn) (豆瓣)
?「數(shù)據(jù)檢索導(dǎo)論」:信息檢索導(dǎo)論 (豆瓣)
爬蟲:?「HTTP 權(quán)威指南」:HTTP權(quán)威指南 (豆瓣)
Web 網(wǎng)站:?「HTML & CSS 設(shè)計與構(gòu)建網(wǎng)站」:HTML & CSS設(shè)計與構(gòu)建網(wǎng)站 (豆瓣)
...
列到這里已經(jīng)不需要繼續(xù)了。
聰明的你一定會發(fā)現(xiàn)上面的大部分書籍,并不是講 Python 的書,而更多的是專業(yè)知識。
事實上,這里所謂“跳出 Python,擁抱世界”,其實是發(fā)現(xiàn) Python 和專業(yè)知識相結(jié)合,能夠解決很多實際問題。這個階段能走到什么程度,更多的取決于自己的專業(yè)知識。
? 深入階段這個階段的你,對 Python 幾乎了如指掌,那么你一定知道 Python 是用 C 語言實現(xiàn)的。
可是 Python 對象的“動態(tài)特征”是怎么用相對底層,連自動內(nèi)存管理都沒有的C語言實現(xiàn)的呢?這時候就不能停留在表面了,勇敢的拆開 Python 的黑盒子,深入到語言的內(nèi)部,去看它的歷史,讀它的源碼,才能真正理解它的設(shè)計思路。
這里推薦一本書:
「Python 源碼剖析」:Python源碼剖析 (豆瓣)
這本書把 Python 源碼中最核心的部分,給出了詳細的闡釋,不過閱讀此書需要對 C 語言內(nèi)存模型和指針有著很好的理解。
另外,Python 本身是一門雜糅多種范式的動態(tài)語言,也就是說,相對于 C 的過程式、 Haskell 等的函數(shù)式、Java 基于類的面向?qū)ο蠖?,它都不夠純粹。換而言之,編程語言的“道學(xué)”,在 Python 中只能有限的體悟。學(xué)習(xí)某種編程范式時,從那些面向這種范式更加純粹的語言出發(fā),才能有更深刻的理解,也能了解到 Python 語言的根源。
這里推薦一門公開課
「編程范式」:斯坦福大學(xué)公開課:編程范式
講師高屋建瓴,從各種編程范式的代表語言出發(fā),給出了每種編程范式最核心的思想。
值得一提的是,這門課程對C語言有非常深入的講解,例如C語言的范型和內(nèi)存管理。這些知識,對閱讀 Python 源碼也有大有幫助。
Python 的許多最佳實踐都隱藏在那些眾所周知的框架和類庫中,例如 Django、Tornado 等等。在它們的源代碼中淘金,也是個不錯的選擇。
? 最后的話每個人學(xué)編程的道路都是不一樣的,其實大都殊途同歸,沒有迷路的人只有不能堅持的人。雖然聽上去有點雞湯,但是這是事實。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/38506.html
摘要:我的決定是學(xué)人工智能,當時對這個比較感興趣。從機器學(xué)習(xí)學(xué)到深度學(xué)習(xí)再學(xué)回機器學(xué)習(xí)。面試,成功地去公司從事機器學(xué)習(xí)深度學(xué)習(xí)方面的基礎(chǔ)工作。這個系列不僅僅以學(xué)習(xí)為目的,目的是為了達到機器學(xué)習(xí)的工作入門標準。 每個字都是經(jīng)驗所得,都是站在一個零基礎(chǔ)的人的角度寫的,純手打+網(wǎng)上優(yōu)秀資源整合,希望大家能每個字都認真看。 接下來文章會側(cè)重在以下幾方面 1、零基礎(chǔ)如何進行人工智能的自學(xué)(以找工作為目...
摘要:我的決定是學(xué)人工智能,當時對這個比較感興趣。從機器學(xué)習(xí)學(xué)到深度學(xué)習(xí)再學(xué)回機器學(xué)習(xí)。面試,成功地去公司從事機器學(xué)習(xí)深度學(xué)習(xí)方面的基礎(chǔ)工作。這個系列不僅僅以學(xué)習(xí)為目的,目的是為了達到機器學(xué)習(xí)的工作入門標準。 每個字都是經(jīng)驗所得,都是站在一個零基礎(chǔ)的人的角度寫的,純手打+網(wǎng)上優(yōu)秀資源整合,希望大家能每個字都認真看。 接下來文章會側(cè)重在以下幾方面 1、零基礎(chǔ)如何進行人工智能的自學(xué)(以找工作為目...
閱讀 1079·2023-04-26 02:21
閱讀 2881·2021-09-24 09:47
閱讀 1667·2019-08-30 15:55
閱讀 2243·2019-08-30 14:01
閱讀 2400·2019-08-29 14:01
閱讀 2115·2019-08-29 12:46
閱讀 879·2019-08-26 13:27
閱讀 2029·2019-08-26 12:23